특정 조건을 만족하는 물고기별 수와 최대 길이 구하기 (LEVEL3)
컬럼명은 물고기의 종류 'FISH_TYPE', 잡은 수 'FISH_COUNT', 최대 길이 'MAX_LENGTH' 출력
FISH_INFO에서 평균 길이가 33cm 이상인 물고기들을 종류별로 분류 (평균 구할 때 10cm이하의 물고기들은 10cm로 취급)
정렬은 물고기 종류 오름차순
정답 코드
SELECT count(*) AS FISH_COUNT, MAX(LENGTH) AS MAX_LENGTH, FISH_TYPE
FROM FISH_INFO
GROUP BY FISH_TYPE
HAVING AVG(IFNULL(LENGTH, 10)) >= 33
ORDER BY FISH_TYPE
MEMO
- NULL 값 대체하기 : IFNUlL(칼럼명, NULL 대체값)
IF(IS NULL(칼럼명), NULL 대체값, NULL 아닌 경우) // IF(IS NULL(LENGTH), 10, LENGTH)
- Coalesce (컬럼명, 0)
// COALESCE(컬렴명1, 컬렴명2, 컬럼명3) : 컬럼명1이 NULL 이면 컬럼명2, 컬렴명2가 NULL 이면 컬럼명3
COALESCE(LENGTH, 10)
- CASE 문을 고민하긴 했지만 활용을 못하겠음.
SELECT count(*) AS FISH_COUNT,
MAX(LENGTH) AS MAX_LENGTH,
FISH_TYPE
FROM FISH_INFO
GROUP BY FISH_TYPE
HAVING AVG(CASE WHEN LENGTH IS NULL THEN 10 ELSE LENGTH END) >= 33
ORDER BY FISH_TYPE
'문제 풀이 > 프로그래머스' 카테고리의 다른 글
[MYSQL 20] 조건에 맞는 아이템들의 가격의 총합 구하기 (1) | 2024.09.14 |
---|---|
[MYSQL 19] 물고기 종류 별 대어 찾기 (0) | 2024.09.13 |
[MYSQL 17] 부서별 평균 연봉 조회하기 (0) | 2024.09.09 |
[MYSQL 16] 조건에 맞는 사용자와 총 거래금액 조회하기 (1) | 2024.09.08 |
[MYSQL 15] 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 (1) | 2024.09.06 |