【发布时间】:2021-09-19 08:40:01
【问题描述】:
** 更新:谢谢大家! SUM 成功了。我的查询运行时间不到 5 秒,而不是我之前的蹩脚解决方案需要 8 分钟才能得出相同的结果!!**
我有一张表格,列出了每种产品每天的销售额:
| day | product | quantity |
|---|---|---|
| 2021-09-19 | Apples | 15 |
| 2021-09-19 | Pears | 10 |
| 2021-09-19 | Potatoes | 5 |
| 2021-09-18 | Apples | 25 |
| 2021-09-18 | Bananas | 17 |
| 2021-09-17 | Potatoes | 3 |
鉴于今天是“2019-09-19”,我想查看最近几天的产品和销售情况,例如:
| product | c0 | c1 | c2 |
|---|---|---|---|
| Apples | 15 | 25 | 0 |
| Pears | 10 | 0 | 0 |
| Potatoes | 5 | 0 | 3 |
| Bananas | 0 | 17 | 0 |
c0 代表今天,c1 代表昨天等等。
我想我必须使用旋转,但我不知道如何... 我尝试了什么:
SELECT product,
COUNT(IF (DATE(day) = UTC_DATE(), quantity, 0)) AS c0,
COUNT(IF (DATE(day) = (UTC_DATE() - INTERVAL 1 DAY), quantity, 0)) AS c1,
COUNT(IF (DATE(day) = (UTC_DATE() - INTERVAL 2 DAY), quantity, 0)) AS c2
FROM sales
GROUP BY product;
但它每天都给出相同的计数...... 即使一天没有销售,我也需要列出的所有产品,按总销售额 DESC 排序。
提前致谢!
【问题讨论】:
-
使用 SUM() 而不是 COUNT()。
-
如果答案对您有所帮助,别忘了点赞并选择其中一个作为已接受的答案,其他可能遇到您问题的人可以毫不犹豫地选择一个并向他们学习