过去5天每天分组

sca*_*and 4 mysql group-by sum

我试图选择过去5天的整数字段的总和,我需要为每天分组.

我在解决分组方面遇到了一些问题.这是我到目前为止的SQL查询:

select 
    sum(`amount_sale`) as total 
from `sales` 
where the_date >= unix_timestamp((CURDATE() - INTERVAL 5 DAY))
Run Code Online (Sandbox Code Playgroud)

这对于共同产生所有5天的总和工作正常,但我需要将其分解,以便显示过去5天中每一天的总和,即:

第1天 - 200美元

第2天 - $ 500

第3天 - 20美元

等等

Qua*_*noi 7

SELECT  DATE(FROM_UNIXTIME(the_date)) AS dt, SUM(amount_sale) AS total
FROM    sales
WHERE   the_date >= UNIX_TIMESTAMP((CURDATE() - INTERVAL 5 DAY))
GROUP BY
        dt
Run Code Online (Sandbox Code Playgroud)

要返回0缺少的日期:

SELECT  dt, COALESCE(SUM(amount_sale), 0) AS total
FROM    (
        SELECT  CURDATE() - INTERVAL 1 DAY AS dt
        UNION ALL
        SELECT  CURDATE() - INTERVAL 2 DAY AS dt
        UNION ALL
        SELECT  CURDATE() - INTERVAL 3 DAY AS dt
        UNION ALL
        SELECT  CURDATE() - INTERVAL 4 DAY AS dt
        UNION ALL
        SELECT  CURDATE() - INTERVAL 5 DAY AS dt
        ) d
LEFT JOIN
        sales
ON      the_date >= UNIX_TIMESTAMP(dt)
        AND the_date < UNIX_TIMESTAMP(dt + INTERVAL 1 DAY)
GROUP BY
        dt
Run Code Online (Sandbox Code Playgroud)

这不是一个非常优雅的解决方案,但MySQL缺乏从头开始生成记录集的方法.