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美元
等等
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
缺乏从头开始生成记录集的方法.