【发布时间】:2021-04-28 18:24:16
【问题描述】:
问题来自leetcode sql question sales analysis I (https://leetcode.com/problems/sales-analysis-i/)。
问题询问畅销书,预期输出为:
|卖家 ID |
| 1 | | 3 |
表架构: 销售表:
| seller_id | product_id | buyer_id | sale_date | quantity | price |
|---|---|---|---|---|---|
| 1 | 1 | 1 | 2019-01-21 | 2 | 2000 |
| 1 | 2 | 2 | 2019-02-17 | 1 | 800 |
| 2 | 2 | 3 | 2019-06-02 | 1 | 800 |
| 3 | 3 | 4 | 2019-05-13 | 2 | 2800 |
我用了两种方式:
方式一:
SELECT seller_id
FROM sales
GROUP BY seller_id
HAVING Sum(price) IN (SELECT Max(total_sales) AS top_sales
FROM (SELECT seller_id,
Sum(price) AS total_sales
FROM sales
GROUP BY seller_id)T)
输出为 1,2,3
方式2:
SELECT seller_id
FROM sales
GROUP BY seller_id
HAVING Sum(price) = (SELECT Max(total_sales) AS top_sales
FROM (SELECT seller_id,
Sum(price) AS total_sales
FROM sales
GROUP BY seller_id)T)
输出为 1,3
两个查询之间的唯一区别是第一个使用'IN',第二个使用'=',但输出不同。第一个有什么问题?
【问题讨论】: