반응형
https://school.programmers.co.kr/learn/courses/30/lessons/131123
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
GROUP BY 정도야 껌이라고 생각하고 들어갔다가 호되게 맞았다..
<오답 코드>
SELECT FOOD_TYPE,REST_ID,REST_NAME, MAX(FAVORITES) as FAVORITES
FROM(
SELECT FOOD_TYPE,REST_ID,REST_NAME,COALESCE(FAVORITES,0) as FAVORITES
from REST_INFO
)r
group by r.FOOD_TYPE
order by FOOD_TYPE desc;
코드가 틀린 이유
SQL 표준에 따르면, GROUP BY 절에 쓰지않은 모든 컬럼은 집계 함수 내에서 사용되어야 한다.
그러나 REST_ID와 REST_NAME은 집계되지 않은 상태로 쿼리에 포함되어 있고, 이로 인해 REST_ID와 REST_NAME에 대한 명확하지 않은 값이 결과로 반환될 수 있다.
참고로 MySQL에서는 임의로 대체해 오류가 안나지만 다른 DBMS에서는 오류가 난다고 한다
( 그래서 더 헷갈린다...)
<정답 코드>
-- 코드를 입력하세요
SELECT r.FOOD_TYPE,r.REST_ID,r.REST_NAME,r.FAVORITES
FROM REST_INFO r
INNER JOIN(
SELECT FOOD_TYPE, MAX(COALESCE(FAVORITES,0)) as FAVORITES
from REST_INFO
group by FOOD_TYPE
) AS p
ON p.FOOD_TYPE = r.FOOD_TYPE AND p.FAVORITES = r.FAVORITES
order by FOOD_TYPE desc;
반응형
'알고리즘(PS) > sql' 카테고리의 다른 글
[SQL] 경기도에 위치한 식품창고 목록 출력하기 (with.COALESCE 사용법) (0) | 2025.01.12 |
---|---|
[About . GROUP BY ] 처음부터 알아보는GROUP BY(프로그래머스 예제들) (0) | 2024.02.17 |
[프로그래머스 MySql] 주문량이 많은 아이스크림들 조회하기 (1) | 2024.02.15 |
[프로그래머스 MySql] 최갯값 구하기 (1) | 2024.02.08 |
[프로그래머스 MySql] 가격이 제일 비싼 식품의 정보 출력하기 (1) | 2024.02.08 |