如何构造一个MySQL查询,使用一个group by语句到SUM()值,还包括在求和值中使用的额外列?
我有一个mysql数据库和一个sales
表。
CREATE TABLE `sales` (
`user` varchar(255) DEFAULT NULL,
`products_sold` int DEFAULT NULL,
`location` varchar(255) DEFAULT NULL,
`day` varchar(255) DEFAULT NULL
);
数据看起来像是...
user | products_sold | location | day
Bob | 10 | Mars | Tuesday
Randy | 12 | Venus | Thursday
Bob | 7 | Venus | Thursday
请注意,这样做的目的是让数据库保持完全相同的结构。所以我不会为user
或类似的东西添加新的外键表。它将保持简单和平坦,就像上面一样。
我想做的是构造一个SQL查询,它提供的结果显示:
- 用户(Bob,Randy)
- 为特定用户销售的产品的总数
- 周二为用户售出的产品总数
- 星期四为用户售出的产品总数因此,结果如下所示:
user | total_sold | tuesday_total | thursday_total
Bob | 17 | 10 | 7
Randy | 12 | 0 | 12
我有一个SELECT语句,它成功地检索了前两列:
select user, sum(products_sold) as total_sold from sales
group by user order by total_sold desc
这个查询检索我要查找的前两列,如下所示:
user | total_sold
Bob | 17
Randy | 12
所以我的问题是,我如何构造一个查询来检索后两列呢?任何帮助都是非常感谢的。
1条答案
按热度按时间dkqlctbz1#
你要的是枢纽。
在Mysql中,你可以在一个sum中使用一个布尔表达式,所以在你的特定示例中添加到你现有的查询中:
演示Fiddle