SQL문제풀이(4)

냐옹·2023년 9월 30일
0

SQL

목록 보기
4/18

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

SELECT 
product_code as PRODUCT_CODE,
SUM(sales_amount * price) as SALES
FROM 
product p
LEFT OUTER JOIN
offline_sale o
ON
p.product_id = o.product_id
WHERE sales_amount is not null
GROUP BY
product_code
ORDER BY
sales desc,
product_code asc;

문풀

근데 이 문제 풀다가 실수한게 있었다.
SUM(sales_amount * price) as SALES

여기서 SUM()을 빼먹었던 건데, 내 생각은
GROUP BY
product_code 하면 다 묶이고, 그 product_code 값의 sales_amount가 어차피 총합일테니
그 product_code.sales_amount * price가 총합일거라 생각했다.

근데 GROUP BY는 실제로 그 행을 저걸로 변화시키고 그걸 내가 계산하면 그거에서 가져오는게 아니라,
GROUP BY는 그룹화만 수행한다. 그리고 행들은 테이블에 그대로다.
그래서 내가 sales_amount * price 를 하게 되면 임의의 한개의 행에 대해서만 계산하는 거다.

GROUP BY에서는 기본적으로 집계함수를 쓸 생각을 하자.

GROUP BY 가 나오면 해야할 생각
1. SELECT 랑 GROUP BY 의 대상이 같아야 한다.
2. 집계함수를 왠만하면 쓰게 한다.
3. HAVING도 생각해놔라. 의도에 있을 수 있다.

0개의 댓글

Powered by GraphCDN, the GraphQL CDN