프로그래머스 물고기 시리즈(6개)

는는·2024년 6월 3일
0

SQL - 문제 풀이

목록 보기
76/77

가장 큰 물고기 10마리 구하기

가장 큰 물고기 10마리의 ID와 길이를 출력하는 문제입니다.

FISH_INFO 테이블에서
SELECT으로 id와 length를 조회 한 후
ORDER BY 에서 길이를 내림차순으로 정렬 한 후 id 기준으로 오름차순 합니다.

그 후 상위 10개만 가져오면 가장 큰 물고기 값 10를 가져올 수 있습니다.

SELECT ID, LENGTH
FROM FISH_INFO
ORDER BY LENGTH DESC, ID
LIMIT 10

잡은 물고기 중 가장 큰 물고기의 길이 구하기

max를 이용하여 가장 큰 물고기 길이를 구하는 문제입니다.

max(length)로 가장 큰 값을 가져오고 concat으로 cm를 붙여주면 정답입니다.

SELECT concat(MAX(LENGTH),"cm") MAX_LENGTH
FROM FISH_INFO

잡은 물고기의 평균 길이 구하기

AVG 함수를 이용하여 평균을 구하는 문제인데요
그 전에 CASE문을 사용하여 10CM 초과하는 값은 그대로 출력해주고 NULL 값인 길이를 10cm로 변경 해줘야합니다.

그 후 AVG함수로 평균을 내고, ROUND함수를 통해 반올림 해주면 정답입니다.

SELECT ROUND(AVG(CASE WHEN LENGTH > 10 THEN LENGTH ELSE "10" END),2) AVERAGE_LENGTH 
FROM FISH_INFO

잔챙이 잡은 수 구하기


이 문제는 손쉽게 풀 수 있는 문제입니다.

FISH_INFO 테이블에서 10CM 이하, null을 가지고 있는 데이터만 조회 한 후

COUNT 함수를 이용하여 값을 세면 됩니다.

SELECT COUNT(ID) FISH_COUNT
FROM FISH_INFO
WHERE LENGTH IS NULL

한 해에 잡은 물고기 수 구하기


2021년도에 잡은 물고기만 출력해야하기에

WHERE절에서 time를 연도만 보이게 변경 후 2021년도 값을 가져와

COUNT 함수를 이용하여 세면 값을 구 할 수 있습니다.

SELECT COUNT(*) FISH_COUNT
FROM FISH_INFO
WHERE YEAR(TIME) = "2021"

월별 잡은 물고기 수 구하기

GROUP BY에서 TIME을 월만 보이게 변경 후 그룹화 합니다.
그 후 SELECT 절에서 count 함수를 이용하여 물고기 수를 세고, month로 시간을 월만 표시하게 합니다.
그 후에는 월별로 오름차순 정렬해주면 정답입니다.

SELECT COUNT(*) FISH_COUNT, month(time) month
FROM FISH_INFO
GROUP BY MONTH(TIME)
ORDER BY month

0개의 댓글