본문 바로가기

Computer Science/DB

SQL - SELECT, FROM, WHERE, ORDER BY, UNION(프로그래머스 SQL 고득점 킷)

728x90
반응형

1)

https://school.programmers.co.kr/learn/courses/30/lessons/131535

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

SELECT COUNT(USER_ID) FROM USER_INFO 
WHERE ((AGE >=20 AND AGE <= 29) 
AND (JOINED>='2021-01-01' AND JOINED <= '2021-12-31'))

해설: USER_INFO라는 테이블에서 USER_ID 컬럼을 선택해라. 조건은 AGE>=20 이면서 AGE <=29이고 JOINED가 2021-01-01과 2021-12-31 사이에 있는 USER_ID 컬럼을 보여라.

 

SELECT는 출력하고자 하는 컬럼을 지정한다. 

FROM은 어떤 테이블에서 가져올지 정한다.

WHERE은 조건문이다 다만 집계함수 같은 개념이 아니라 컬럼에 존재하는 값에 적용하는 것이다..

 

2)

https://school.programmers.co.kr/learn/courses/30/lessons/59405

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

SELECT NAME FROM ANIMAL_INS ORDER BY DATETIME DESC LIMIT 1

 해설: ANIMAL_INS 테이블에서 NAME 컬럼을 선택해라. 정렬을 해라 DATE TIME을 기준으로 내림차순 정렬을 해라. 그리고 가장 앞에 잇는 한 개의 데이터만 보여라.

 

ORDER BY는 특정 컬럼을 기준으로 정렬할 수 있다.

DESC는 내림차순, ASC는 오름차순이다.

LIMIT n은 순서대로 n개의 데이터를 보인다.

 

3)

https://school.programmers.co.kr/learn/courses/30/lessons/59037

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

SELECT ANIMAL_ID, NAME 
FROM ANIMAL_INS 
WHERE INTAKE_CONDITION NOT IN ('Aged') ORDER BY ANIMAL_ID

해설: INTAKE_CONDITION 컬럼에 'Aged'가 아닌 데이터들만 ANIMAL_ID 기준으로 정렬해서 ANIMAL_INS 테이블에 있는 ANIMAL_ID와 NAME을 보여라.

 

WHERE은 조건문을 나타낸다.

IN과 NOT IN으로 조건을 설정할 수 있다.

 

4)

https://school.programmers.co.kr/learn/courses/30/lessons/131537

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

SELECT DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT
FROM ONLINE_SALE 
WHERE SALES_DATE BETWEEN '2022-03-01' AND '2022-03-31'

UNION

SELECT SALES_DATE, PRODUCT_ID, NULL AS USER_ID, SALES_AMOUNT
FROM OFFLINE_SALE 
WHERE SALES_DATE BETWEEN '2022-03-01' AND '2022-03-31'
ORDER BY SALES_DATE, PRODUCT_ID, USER_ID ASC

해설: 두 개의 테이블에서 각각 SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT를 선택해라. UNION 해서 선택된 데이터를 합친 후 SALES_DATE, PRODUCT_ID, USER_ID를 기준으로 오름차순 정렬해라.

 

DATE_FORMAT은 날짜의 형태를 바꿀 수 있다.

UNION은 각각의 테이블에서 선택된 데이터들을 합쳐준다. 존재하지 않는 데이터에 대해서는 NULL을 넣어 줘야 한다.

 

5)

https://school.programmers.co.kr/learn/courses/30/lessons/131536

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

SELECT USER_ID,PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
HAVING COUNT(ONLINE_SALE_ID) > 1
ORDER BY USER_ID ASC, PRODUCT_ID DESC;

해설: ONLINE_SALE 테이블로 부터 USER_ID와 PRODUCT_ID를 선택한다. USER_ID와 PRODUCT_ID만 가진 그룹으로 묶어준다. 해당 그룹에서 ONLINE_SALE_ID의 개수가 1개 초과인 데이터, 즉 중복 데이터가 존재하는 USER_ID와 PRODUCT_ID를 가져온다. 해당 데이터를 조건에 맞게 정렬해서 출력한다.  

 

GROUP BY는 특정 컬럼을 기준으로 데이터를 집계해서 그룹화해 준다.

HAVING은 그룹화 후 조건처리를 하고 싶을 때 사용한다. HAVING 절은 GROUP BY 절과 함께 사용해야 하며 집계 함수를 사용하여 조건절을 작성하거나 GROUP BY 컬럼만 조건절에 사용할 수 있다. HAVING 절에는 COUNT, SUM, AVG, MAX, MIN 등 집계함수를 사용하여 조건을 부여할 수 있다.

 

6)

https://school.programmers.co.kr/learn/courses/30/lessons/133025

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

SELECT FH.FLAVOR 
FROM FIRST_HALF FH, ICECREAM_INFO II 

WHERE FH.TOTAL_ORDER > 3000 and II.FLAVOR = FH.FLAVOR 
and II.INGREDIENT_TYPE = 'fruit_based'

ORDER BY FH.TOTAL_ORDER DESC

해설: 각각의 테이블을 선언 후 조건에 맞게 설정한다. II.FLAVOR = FH.FLAVOR 외래키의 개념으로 II.FLAVOR중 WHERE 조건에 맞는FH.FLAVOR에 존재하는 II.FLAVOR 값들만 추출한다. 그중 II.INGREDIENT_TYPE이 'fuit_based'인 데이터만 추출한다.

 

두 개의 테이블을 FROM절에서 한 번에 선언하면 좀 더 편하다.

외래키는 두 테이블의 데이터 간 연결을 설정하고 강제 적용하여 외래 키 테이블에 저장될 수 있는 데이터를 제어하는 데 사용되는 열이다.

728x90
반응형

'Computer Science > DB' 카테고리의 다른 글

10. 데이터 베이스의 저장과 접근  (0) 2022.06.18
7-2. Trigger and Stored Procedure  (0) 2022.06.04
8. 데이터 모델링  (0) 2022.06.03
7. 데이터 종속성과 정규화  (0) 2022.06.01