题解 | SQLW9 每个商品的销售总额
WITH t1 AS (
SELECT a.quantity,
p.name,
p.category
FROM orders a
LEFT JOIN products p
on a.product_id = p.product_id
),
t2 AS (
SELECT name,
SUM(quantity) AS total_sales
FROM t1
GROUP BY name
),
t3 AS (
SELECT t2.name AS product_name,
t2.total_sales,
RANK()
over (PARTITION BY p.category
ORDER BY t2.total_sales DESC,product_id ASC)
AS category_rank
FROM t2
LEFT JOIN products p
ON t2.name = p.name
)SELECT * FROM t3
WHERE product_name IS NOT NULL ;
# 这道题的细节是出现了空值,一般还是 inner join 好一点!

