학습일기 day25 - sql 시험대비 프로그래머스 문제풀이

이건구·2023년 9월 24일
0

5월 식품들의 총매출 조회하기

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

SELECT FO.PRODUCT_ID, PRODUCT_NAME, SUM(AMOUNT * PRICE) AS TOTAL_SALES
FROM FOOD_ORDER FO
INNER JOIN FOOD_PRODUCT FP ON FO.PRODUCT_ID = FP.PRODUCT_ID
WHERE FO.PRODUCE_DATE >= '2022-05-01' AND FO.PRODUCE_DATE < '2022-06-01'
GROUP BY PRODUCT_ID
ORDER BY TOTAL_SALES DESC ,
FO.PRODUCT_ID

우선 FOOD_ORDER 테이블과 FOOD_PRODUCT 테이블을 INNER JOIN 해준뒤 WHERE 절에서 날짜 범위를 정해준다.

그리고 같은 ID의 상품이 있을수도있으니 PRODUCT_ID로 GROUP BY를 해주고나서, SELECT에서 ID, NAME, 총매출(AMOUNT x PRICE)을 골라준다

그리고 총매출로 내림차순, ID로 오름차순 정렬해주면된다.

재구매가 일어난 상품과 회원 리스트 구하기

문제 : ONLINE_SALE 테이블에서 동일한 회원이 동일한 상품을 재구매한 데이터를 구하여, 재구매한 회원 ID와 재구매한 상품 ID를 출력하는 SQL문을 작성해주세요. 결과는 회원 ID를 기준으로 오름차순 정렬해주시고 회원 ID가 같다면 상품 ID를 기준으로 내림차순 정렬해주세요.

SELECT USER_ID, PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
HAVING COUNT(PRODUCT_ID) > 1
ORDER BY USER_ID,
PRODUCT_ID DESC
#### 동일한 회원이 동일한 상품을 재구매한 데이터를 구하기 위해 USER_ID와 PRODUCT_ID로 GROUP BY 해주었다
#### 그리고 주문횟수가 1보다 커야 재구매한것이기때문에 HAVING에 COUNT(PRODUCT_ID) > 1 이라는 조건을 넣어주고, UESR_ID, PRODUCT_ID를 SELECT해주면된다.
#### USER_ID는 오름차순 PRODUCT_ID는 내림차순정렬해주면 끝.

0개의 댓글