Coding Test Practice/SQL
[프로그래머스 코딩테스트 연습 SQL 고득점 Kit] SUM, MAX, MIN, GROUP BY
y2r1m
2022. 9. 14. 00:51
SUM, MAX, MIN
문제 링크 : https://school.programmers.co.kr/learn/courses/30/parts/17043
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 최댓값 구하기
# 가장 최근에 들어온 동물은 언제 들어왔는지 조회
SELECT DATETIME FROM ANIMAL_INS ORDER BY DATETIME DESC LIMIT 1
2. 최솟값 구하기
# 가장 먼저 들어온 동물은 언제 들어왔는지 조회
SELECT DATETIME FROM ANIMAL_INS ORDER BY DATETIME LIMIT 1
3. 동물 수 구하기
# 동물 보호소에 동물이 몇 마리 들어왔는지 조회
SELECT COUNT(ANIMAL_ID) FROM ANIMAL_INS
4. 중복 제거하기
# 동물 보호소에 들어온 동물의 이름은 몇 개인지 조회 (이때 이름이 NULL인 경우는 집계하지 않으며 중복되는 이름은 하나로 침)
SELECT COUNT(DISTINCT NAME) FROM ANIMAL_INS
GROUP BY
문제 링크 : https://school.programmers.co.kr/learn/courses/30/parts/17044
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 고양이와 개는 몇 마리 있을까
# 동물 보호소에 들어온 동물 중 고양이와 개가 각각 몇 마리인지 조회 (이때 고양이를 개보다 먼저 조회)
SELECT ANIMAL_TYPE, COUNT(DISTINCT ANIMAL_ID) AS count FROM ANIMAL_INS GROUP BY ANIMAL_TYPE
=> ANIMAL_ID 앞에 DISTINCT를 안써주고 헤맸다,,
2. 동명 동물 수 찾기
# 동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회 (이때 결과는 이름이 없는 동물은 집계에서 제외하며, 결과는 이름 순으로 조회)
SELECT NAME, COUNT(NAME) FROM ANIMAL_INS GROUP BY NAME HAVING COUNT(NAME) >= 2 ORDER BY NAME
3. 입양 시각 구하기(1)
# 보호소에서 09:00부터 19:59까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회 (이때 결과는 시간대 순으로 정렬)
SELECT HOUR(DATETIME) AS HOUR, COUNT(ANIMAL_ID) AS COUNT
FROM ANIMAL_OUTS
GROUP BY HOUR
HAVING HOUR BETWEEN 9 AND 20
ORDER BY HOUR
=> 시간 범위를 9에서 20 사이로 지정해주는 것이 중요했다.
4. 입양 시각 구하기(2)
# 보호소에서 0시부터 23시까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회 (이때 결과는 시간대 순으로 정렬)
SET @h := -1; # 사용자 정의 변수
SELECT (@h := @h + 1) AS HOUR,
(SELECT COUNT(*) FROM ANIMAL_OUTS
WHERE HOUR(DATETIME) = @h) AS COUNT
FROM ANIMAL_OUTS
WHERE @h < 23
=> 너무 어려워서 다른 답안을 참고했다.. 덕분에 사용자 정의 변수에 대해 알게 되었다!