본문 바로가기
SQL

SQL TMP

by shur_ 2024. 8. 13.

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 해보자.

 

https://velog.io/@hyeh/%EB%91%90-%EA%B0%9C-%EC%9D%B4%EC%83%81%EC%9D%98-%ED%85%8C%EC%9D%B4%EB%B8%94%EC%97%90%EC%84%9C-SQL-%EC%A7%88%EC%9D%98-JOIN

 

두 개 이상의 테이블 다루기 - JOIN

두 개 이상의 테이블을 합체해보자!

velog.io

 

댓글