我有这张订单表

| ORDER_ID | PRODUCT | CUSTOMER  | QTY | DATE
---------------------------------------------
|       1  |  shoes  |    Nick   |   1 | 01/01/2016
|       2  |  shirts |    Nick   |   5 | 02/02/2016
|       3  |  shoes  |    Paul   |  10 | 03/03/2016
|       4  |  shirts |    Paul   |  20 | 04/04/2016


因此,如何使用ONE Select语句获得此报告结果?

| Date_of_Order |  Customer  |  Quantity | PRODUCT_TOTAL_SALES |
-----------------------------------------------------------------
|   01/01/2016  |   Nick     |     1     |      shoes : 11     |
|   02/02/2016  |   Nick     |    10     |     shirts : 25     |
|   03/03/2016  |   Paul     |     5     |      shoes : 11     |
|   04/04/2016  |   Paul     |    20     |     shirts : 25     |


我知道如何使用concat(column1, ' ', column2)创建组合列,但是我没有成功为其中的分组项添加总和。当我尝试左连接时,我得到一个产品的总和...但是它总是总和,并且与订单日期无关,因此当我尝试过滤查询结果一段时间后,我仍然得到鞋子11件,衬衫25件...

最佳答案

您可以group by多列并获得最小组的总和。

如果您想获得每日销售额,请使用GROUP BY product代替GROUP BY product, date

SELECT
    o.`date` AS Date_of_Order,
    SUM(o.qty) as Total_Quantity,
    CONCAT(o.product, ':', SUM(o.qty))
FROM
    orders o
GROUP BY product, `date`
ORDER BY `date`

关于mysql - 计算MySQL中组记录的总和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36916860/

10-13 22:25