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도 생각해놔라. 의도에 있을 수 있다.