如何在 MySQL 中发现一个月中每一天的总和?
Posted
技术标签:
【中文标题】如何在 MySQL 中发现一个月中每一天的总和?【英文标题】:How to discover the sum of each day of a month in MySQL? 【发布时间】:2013-04-26 14:42:28 【问题描述】:假设我们有一个表(例如sales
),其中包含三个字段id
(int,primary),price
(double),date
(datetime)。
我们怎样才能得到当月每一天的price
属性的总和?
到最后一个月?
我也需要类似的退货:
二月
01 02 03 04 ... 30
101.1 233.43 1232.42 3232.21 121.23
四月
01 02 03 04 ... 30 31
11.1 23.43 122.42 332.21 121.23 2323.32
我们怎样才能做到这一点?
请给我一个SQL作为例子。
我想写一个方法来发现一个月的天数,而不是迭代地创建 SQL,但我认为这不是最好的方法。
【问题讨论】:
select sum(price) ... group by year(datefield), month(datefield), day(datefield)
您希望结果是水平的?
@FreshPrinceOfSO,水平不是真的需要,谢谢通知。
【参考方案1】:
你实际上想要做一个支点:
select year(date), month(date),
sum(case when day(date) = 1 then price end) as price_01,
sum(case when day(date) = 2 then price end) as price_02,
. . .
sum(case when day(date) = 31 then price end) as price_31
from sales
group by month(date), year(date)
然后为您想要的日期添加一个where
子句。比如:
where month(date) = month(now())
【讨论】:
【参考方案2】:收集所有想法(谢谢@MarcB、@Stephan、@GordonLinoff)SQL 波纹管是我正在寻找的:
二月
SELECT
SUM(price) AS daySum
FROM
sales
WHERE
date BETWEEN DATE_FORMAT(NOW() - INTERVAL 2 MONTH,'%Y-%m-01 00:00:00') AND DATE_FORMAT(LAST_DAY(NOW() - INTERVAL 2 MONTH),'%Y-%m-%d 23:59:59')
GROUP BY
YEAR(date),
MONTH(date),
DAY(date)
四月(我们目前是四月)
SELECT
SUM(price) AS daySum
FROM
sales
WHERE
date BETWEEN DATE_FORMAT(NOW(),'%Y-%m-01 00:00:00') AND DATE_FORMAT(LAST_DAY(NOW()),'%Y-%m-%d 23:59:59')
GROUP BY
YEAR(date),
MONTH(date),
DAY(date)
非常感谢。
【讨论】:
非常感谢!你知道如何做到这一点,即使对于没有订单的日期,它也会显示 0。现在它只会在结果中删除那一天并给出不一致的结果(有些日子会丢失)以上是关于如何在 MySQL 中发现一个月中每一天的总和?的主要内容,如果未能解决你的问题,请参考以下文章
mysql怎么得到时间段每一天,不用表,就是得到一个时间段的每一天的日期
php使用mysql数据库,要查询一个时间段里面每一天的数据量,当天没有则显示0.时间段可能是几天或者几月