https://school.programmers.co.kr/learn/courses/30/lessons/131116
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
SELECT
CATEGORY,
PRICE AS MAX_PRICE,
PRODUCT_NAME
FROM FOOD_PRODUCT
WHERE PRICE IN (SELECT
CATEGORY,
MAX(PRICE) AS PRICE
FROM FOOD_PRODUCT
WHERE CATEGORY IN ('과자','국','김치','식용유')
GROUP BY CATEGORY) AND CATEGORY IN ('과자','국','김치','식용유')
ORDER BY MAX_PRICE DESC;
처음 작성한 쿼리문.
카테고리, 최대가격, 제품명을 출력해야 하는데 SELECT절에 있는 집계함수를 제외한 COLUMN은 GROUP BY절에 들어가야 하므로 서브쿼리를 이용해야겠다고 생각했다. (참고 : https://com-l.tistory.com/125)
[MySQL] GROUP BY 주의사항
GROUP BY를 사용할 때 자꾸 하는 실수가 있다. 잊지 말자! GROUP BY를 사용할 때 SELECT에서는 GROUP BY에 사용된 컬럼 또는 집계 함수를 적용한 컬럼만 올 수 있다. Q. 그럼 Group by에 사용된 컬럼 또는 집계
com-l.tistory.com
SELECT
CATEGORY,
PRICE AS MAX_PRICE,
PRODUCT_NAME
FROM FOOD_PRODUCT
WHERE (CATEGORY, PRICE) IN (
SELECT CATEGORY, MAX(PRICE)
FROM FOOD_PRODUCT
WHERE CATEGORY IN ('과자', '국', '김치', '식용유')
GROUP BY CATEGORY
)
ORDER BY PRICE DESC;
최종 쿼리.
WHERE 절에 IN을 사용해서 여러 컬럼을 비교.
GROUP BY 절에 없는 컬럼을 조회할 때는 서브쿼리에서 GROUP BY를 사용하여 원하는 조건을 뽑아내거나 JOIN 해보자.
두 개 이상의 테이블 다루기 - JOIN
두 개 이상의 테이블을 합체해보자!
velog.io
'SQL' 카테고리의 다른 글
[SQL 고득점 Kit] String, Date : 자동차 대여 기록 별 대여 금액 구하기 (0) | 2024.08.22 |
---|---|
[SQL 고득점 Kit] GROUP BY : 언어별 개발자 분류하기 (0) | 2024.08.21 |
sql (0) | 2024.08.07 |
SQL 정리 (0) | 2024.08.02 |
[SQL 고득점 Kit] SELECT : 재구매가 일어난 상품과 회원 리스트 구하기 (0) | 2024.08.01 |
댓글