首页 新闻 搜索 专区 学院

PGsql实现每一天按小时分组

0
悬赏园豆:5 [已解决问题] 解决于 2020-07-24 07:53

sql SELECT sum(type) lineysum,to_char(createtime,'yyyy-MM-dd HH24') linextime,8 as type FROM ad_log WHERE to_char(createtime, 'yyyy-MM-dd') =to_char(now()::timestamp + '-3 day', 'yyyy-MM-dd') GROUP BY to_char(createtime,'yyyy-MM-dd HH24') ORDER BY linextime;

结果

如何生成完整24小时,没有则为0?

我不舔了的主页 我不舔了 | 小虾三级 | 园豆:1197
提问于:2020-07-20 10:46
< >
分享
最佳答案
0
	 SELECT  timeconfig.time  
                FROM
                ( SELECT  to_char(generate_series(to_date('20200724','yyyyMMdd'), to_date('20200725','yyyyMMdd'), '1 hours') ,'yyyy-MM-dd HH24')   AS  time) AS timeconfig
              

这段sql实现这个功能

我不舔了 | 小虾三级 |园豆:1197 | 2020-07-24 07:49

这个不是最优解
下面这个才是

SELECT  time_bucket_gapfill('1 day', createtime, now() - INTERVAL '1 month', now()) AS day,
COALESCE(SUM(num),0),
COALESCE(SUM(profit),0) 
FROM rp_espipledgelog
WHERE createtime > now () - INTERVAL '1 month'
GROUP BY day 
ORDER BY day;


我不舔了 | 园豆:1197 (小虾三级) | 2020-08-11 07:49
其他回答(1)
0

select 24条记录,分别存放时间,每个小时一条,然后用这些记录left join 你查询出来的结果。其实不一定非得写sql吧,在后台代码里把不存在的时间不上0就行了

收获园豆:5
会长 | 园豆:10275 (专家六级) | 2020-07-20 11:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册