본문 바로가기
언어 & 라이브러리/SQL

[SQL] 프로그래머스 SQL 고득점 KIT 문제 풀이 정답 -1

by illlilillil 2022. 3. 30.

SELECT

모든 레코드 조회하기

SELECT * FROM ANIMAL_INS

역순 정렬하기

SELECT NAME, DATETIME FROM ANIMAL_INS ORDER BY ANIMAL_ID DESC

아픈 동물 찾기

SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION = "Sick"

어린 동물 찾기

SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE NOT INTAKE_CONDITION = "Aged"

동물의 아이디와 이름

SELECT ANIMAL_ID, NAME FROM ANIMAL_INS
여러 기준으로 정렬하기
SELECT ANIMAL_ID, NAME, DATETIME
FROM ANIMAL_INS 
ORDER BY NAME , DATETIME DESC

상위 n개 레코드

SELECT NAME
FROM ANIMAL_INS
ORDER BY DATETIME
LIMIT 1

 

SUM, MAX, MIN

최댓값 구하기

AS로 필드명 정하기

SELECT MAX(DATETIME) AS '시간'
FROM ANIMAL_INS

최솟값 구하기

SELECT MIN(DATETIME) AS '시간'
FROM ANIMAL_INS
동물 수 구하기
SELECT COUNT(*)
FROM ANIMAL_INS

중복 제거하기

SELECT COUNT(DISTINCT NAME)
FROM ANIMAL_INS
WHERE NAME IS NOT NULL;

 

GROUP BY

고양이와 개는 몇 마리 있을까

select ANIMAL_TYPE, count(ANIMAL_TYPE)
from ANIMAL_INS
group by ANIMAL_TYPE
order by ANIMAL_TYPE

동명 동물 수 찾기

이름이 없는 동물은 집계에서 제외 -> where NAME is NOT NULL

동물 이름 중 두 번 이상 쓰인 이름 -> group by NAME ,HAVING count(NAME) >=2

결과는 이름 순으로 조회 -> order by NAME

select NAME, count(NAME)
from ANIMAL_INS
where NAME is NOT NULL
group by NAME
HAVING count(NAME) >=2
order by NAME

입양 시각 구하기1

HOUR -> 시간 추출

GROUP BY HOUR(DATETIME) -> 시간대별로 그룹화

HAVING HOUR >= 9 and HOUR <= 19 -> 9-19 사이만 조회

order by HOUR -> 오름차순 정렬

SELECT HOUR(DATETIME) HOUR, COUNT(DATETIME) COUNT
FROM ANIMAL_OUTS
GROUP BY HOUR(DATETIME)
HAVING HOUR >= 9 and HOUR <= 19
order by HOUR

입양 시각 구하기2 -서브쿼리

SET @hour로 변수 선언할 수 있다. (@hour := @hour + 1) as hour

서브 쿼리로 시간대별 조회

SET @hour := -1; -- 변수 선언

SELECT (@hour := @hour + 1) as HOUR,
(SELECT COUNT(*) FROM ANIMAL_OUTS 
 WHERE HOUR(DATETIME) = @hour) as COUNT
FROM ANIMAL_OUTS
WHERE @hour < 23

 

IS NULL

이름이 없는 동물 아이디

SELECT ANIMAL_ID 
FROM ANIMAL_INS
WHERE NAME is NULL

이름이 있는 동물 아이디

SELECT ANIMAL_ID 
FROM ANIMAL_INS
WHERE NAME is NOT NULL
order by ANIMAL_ID

NULL 처리하기 - IFNULL로 널 값일때 세팅

SELECT ANIMAL_TYPE, 
IFNULL(NAME, "No name") AS NAME,
SEX_UPON_INTAKE 
FROM ANIMAL_INS

 

내용이 길어 다음 장에 JOIN, STRING, DATE에 대해 알아 보겠습니다.

댓글