MYSQL求每天的总和累加

MYSQL求每天的总和累加,第1张

换其他数据库一个 sum() over (partition by ... )就解决了..

mysql比较麻烦, 可以试下

select a.Daytime,sum(new_Role)

from (select distinct DATE_FORMAT(createtime,'%Y-%m-%d') as Daytime)

from `actors` WHERE ( (`createtime` >= '2019-02-01 00:00:00') AND (`createtime` <= '2019-02-11 24:00:00') )

) a

left join (select * from `actors`

WHERE ( (`createtime` >= '2019-02-01 00:00:00') AND (`createtime` <= '2019-02-11 24:00:00') )

)b

on a.Daytime>=b.createtime

group by a.Daytime

order by 1

datetime类型字段累加原则上可以直接使用sum函数的,例如:

select sum(logtime) from logRecords

尽管可以执行,但是这种对于“时刻”的累加数是没有意义的。对于mySql来说其实际算法是将datetime类型字段值按4位年、2位月、2位日、2位时、2位分、2位秒顺序组成一个数字后再进行累加。假如表中只有两条记录,登录时间分别是

logtime

2016-07-15 13:55:12

2016-07-15 13:50:20

Sum累加的结果是:40321430270532,其实是没有太多意义的,除非编写自定义函数将其转换成时间日期的显示格式,也就是两千多年后的某个日子与时间,能说明什么呢?。

一般来讲,累加“时刻”没有意义,但是累加"用时"是有意义的, 如果需要对datetime类型字段进行累加,选取其中的单纯一种时间单位数(如日数、时数、秒数等)后再进行累加,才会有意义

select CAST(startTime AS DATE) startTime,count(*) as a,

sum(case when serviceType='转办' then 1 else 0 end ) as b,

sum(case when endTime>now() then 1 else 0 end ) as c,

sum(case when callType='重复投诉' then 1 else 0 end ) as d,


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/7286186.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-03
下一篇2023-04-03

发表评论

登录后才能评论

评论列表(0条)

    保存