【问题标题】:SQL query to return amount of sales and amount of salespersonsSQL查询返回销售额和营业员数量
【发布时间】:2014-03-12 09:12:21
【问题描述】:

这里是凌晨 4 点……这让我发疯了。我有一个报表:

  • id_report
  • 发票日期
  • id_user(销售人员)

我需要按月显示售出的商品数量,以及售出这些商品的销售人员数量。例如,一月份用户 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

谢谢!

【问题讨论】:

    标签: mysql sql count group-by


    【解决方案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

    【讨论】:

    • 几乎没有,还有一些报告要完成。 3小时后的最后期限:s
    • 以防万一你想give me one more hand :s 我在这里有点绝望,呵呵
    【解决方案2】:

    使用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
    

    【讨论】:

      【解决方案3】:

      您需要添加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
      

      【讨论】:

      • 试过了,但是sales_persons返回了作为物品的确切数量,事实并非如此。
      【解决方案4】:

      您没有要求查询中的第三列。添加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
      

      【讨论】:

      • 如果我按照@Aziz Shaikh 的建议在 id_user COUNT 中添加 DISTINCT 就可以了
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-06
      相关资源
      最近更新 更多