쉬운 프로그래밍

SQL 코딩테스트 주요 쿼리 본문

SQL/문제풀이

SQL 코딩테스트 주요 쿼리

쉬운형 2021. 3. 9. 16:20

1. 정렬 (ORDER BY)

ORDER BY ~

ORDER BY DESC : 내림차순

ORDER BY ASC : 오름차순(디폴트)

SELECT * FROM ANIMAL_INS
ORDER BY ANIMAL_ID DESC;

 

ORDER BY는 여러 기준으로도 정렬이 가능함

SELECT ANIMAL_ID, NAME, DATETIME
FROM ANIMAL_INS
ORDER BY NAME, DATETIME DESC;

 

상위 N개로 제한하기

SELECT NAME
FROM ANIMAL_INS
ORDER BY DATETIME
LIMIT 1

 

2. 최대값/최소값 구하기

MAX

SELECT MAX(DATETIME) AS 시간
FROM ANIMAL_INS

MIN

SELECT MIN(DATETIME)
FROM ANIMAL_INS

 

3. 개수 구하기

COUNT

SELECT COUNT(*) AS '숫자'
FROM ANIMAL_INS

DISTINCT (중복 제거한 개수 구하기)

SELECT COUNT(DISTINCT NAME) AS 'COUNT'
FROM ANIMAL_INS

 

4. 그룹화 하기

GROUP BY ~ 

SELECT ANIMAL_TYPE, COUNT(*) AS 'count'
FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE
ORDER BY ANIMAL_TYPE;

위 결과값

 

 

5. 집계를 통한 비교

WHERE 절에서는 집계 함수를 사용할 수 없기에 HAING절을 통해 집계함수를 사용한다. 이 때 HAVING 절은 GROUP BY절과 함께 사용하도록 한다.

 

HAVING ~

 

예시

SELECT HOUR(DATETIME) AS 'HOUR', COUNT(HOUR(DATETIME)) AS 'COUNT'
FROM ANIMAL_OUTS
GROUP BY HOUR 
HAVING HOUR >= 9 AND HOUR < 20
ORDER BY HOUR

결과

 

6. NULL 처리

IFNULL( ~ )

SELECT ANIMAL_TYPE, IFNULL(NAME, 'No name'), SEX_UPON_INTAKE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID

IFNULL(NAME, 'No name') -> Name이 Null일경우 No name으로 처리

 

7. JOIN

LEFT OUTER JOIN : www.youtube.com/watch?v=pJqBR2TNe24&list=PLuHgQVnccGMAG1O1BRZCT3wkD_aPmPylq&index=4&ab_channel=%EC%83%9D%ED%99%9C%EC%BD%94%EB%94%A9 

 

예시 소스코드

SELECT OUTS.ANIMAL_ID, OUTS.NAME
FROM ANIMAL_OUTS AS OUTS
LEFT OUTER JOIN ANIMAL_INS AS INS
ON OUTS.ANIMAL_ID = INS.ANIMAL_ID
WHERE INS.ANIMAL_ID IS NULL
ORDER BY OUTS.ANIMAL_ID

 

8. CASE ~ THEN ~

CASE WHEN THEN ELSE 구문. -> 결과값 대체

-- 코드를 입력하세요
SELECT ANIMAL_ID, NAME,
CASE WHEN SEX_UPON_INTAKE LIKE '%Neutered%' OR 
SEX_UPON_INTAKE LIKE '%Spayed%' THEN 'O'
ELSE 'X'
END
FROM ANIMAL_INS

 

9. DATE FORMAT

SELECT ANIMAL_ID, NAME, DATE_FORMAT(DATETIME, "%Y-%m-%d")
FROM ANIMAL_INS
ORDER BY ANIMAL_ID
Comments