개발하는 자몽

[프로그래머스] JOIN > 그룹별 조건에 맞는 식당 목록 출력하기 본문

SQL

[프로그래머스] JOIN > 그룹별 조건에 맞는 식당 목록 출력하기

jaamong 2024. 2. 11. 14:22

문제

https://school.programmers.co.kr/learn/courses/30/lessons/131117

FOOD_PRODUCT와 FOOD_ORDER 테이블에서 생산일자가 2022년 5월인 식품들의 식품 ID, 식품 이름, 총매출을 조회하는 SQL문을 작성해 주세요. 이때 결과는 총매출을 기준으로 내림차순 정렬해 주시고 총매출이 같다면 식품 ID를 기준으로 오름차순 정렬해 주세요.

 

풀이

  • 생산일자가 2022년 5월인 식품
  • 식품 ID, 식품 이름, 총매출 조회
  • 총매출을 기준으로 내림차순 정렬, 총매출이 같다면 식품 ID 기준으로 오름차순 정렬
SELECT p.PRODUCT_ID, p.PRODUCT_NAME, SUM(p.PRICE * o.AMOUNT) AS TOTAL_SALES 
FROM FOOD_PRODUCT p JOIN FOOD_ORDER o ON p.PRODUCT_ID = o.PRODUCT_ID
WHERE DATE(o.PRODUCE_DATE) LIKE '2022-05%'
GROUP BY p.PRODUCT_ID 
ORDER BY TOTAL_SALES DESC, p.PRODUCT_ID ASC;
  1. 주어진 정보에서 총매출은 둘 중의 한 테이블에서만 구할 수 없으므로 `JOIN` 해야 한다.
    • 각 테이블에 공통으로 존재하는 `PRODUCT_ID`를 기준으로 `JOIN` 한다.
  2. 날짜가 2022년 5월이어야 하므로, `WHERE`절에 조건을 추가한다. → DATE 형식: '2022-05%' 
  3. 총매출은 상품의 가격과 수량을 곱하여 더한다.
    • 이때 제품당 총매출을 구해야 하므로 `GROUP BY`를 사용한다.
    • 같은 그룹 내 상품들의 매출을 더하여(SUM) 총매출을 구한다.

 

참고 GROUP BY절에 사용한 칼럼은 SELECT절에 있어야 사용할 수 있다.

 

 

 

Comments