SQL查询返回销售额和销售人员数量

时间:2014-03-12 09:12:22

标签: mysql sql count group-by

凌晨4点......这让我疯了。我有一份报告表:

  • id_report
  • invoice_date
  • id_user(销售人员)

我需要按月显示已售出的商品数量,以及销售这些商品的销售人员数量。例如,在1月份,用户3售出10件物品,而用户8售出7件物品,应返回:

date    | items | salespersons
2014-01 | 17    | 2

这是我的第一个方法,但这并没有给我带来第三列:

SELECT DATE_FORMAT(invoice_date, "%Y-%m") AS date, COUNT(*) AS items,  
FROM report
GROUP BY date

谢谢!

4 个答案:

答案 0 :(得分:1)

在您的查询中,您尚未添加第三列。试试这个:

SELECT DATE_FORMAT(invoice_date, "%Y-%m") AS date, 
COUNT(*) AS items,
COUNT(DISTINCT id_user) AS salespersons
FROM report 
GROUP BY date

工作演示:http://sqlfiddle.com/#!2/03e45/1

答案 1 :(得分:1)

使用DISTINCT关键字非常重要,否则您将拥有与项目相同的计数。

SELECT 
  DATE_FORMAT(invoice_date, '%Y-%m') AS date, 
  COUNT(*) AS items, 
  COUNT(DISTINCT id_user) as sales_persons 
FROM report 
GROUP BY date

答案 2 :(得分:0)

您需要添加count( id_user ) as sales_persons 这没有被选中。

SELECT 
  DATE_FORMAT(invoice_date, "%Y-%m") AS date, 
  COUNT(*) AS items, 
  count( id_user ) as sales_persons 
FROM report 
GROUP BY date

答案 3 :(得分:0)

您不是要求查询中的第三列。添加COUNT(id_user) as salespersons。你的查询是这样的:

SELECT DATE_FORMAT(invoice_date, "%Y-%m") AS date, COUNT(*) AS items, COUNT(id_user) as salespersons FROM report GROUP BY date