首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使此查询也返回计数值为0的行?

如何使此查询也返回计数值为0的行?
EN

Stack Overflow用户
提问于 2012-08-01 22:12:49
回答 2查看 372关注 0票数 1

我已经编写了一个小的PostgreSQL查询,它可以帮助我在两个特定的日期-e.g内每天每小时间隔执行的作业总数。在2012年2月2日和2012年3月3日之间执行的所有作业从2月2日给定的小时开始,到3月3日给定的小时结束-我注意到此查询不会打印在该时间间隔内执行的计数为0的行-no作业,例如在2012年2月21日下午5点到6点之间-。我怎么才能让它也返回0计数的结果(行)呢?代码如下:

代码语言:javascript
复制
SELECT date_trunc('hour', executiontime), count(executiontime)
  FROM mytable
 WHERE executiontime BETWEEN '2011-2-2 0:00:00' AND '2012-3-2 5:00:00' 
 GROUP BY date_trunc('hour', executiontime)
 ORDER BY date_trunc('hour', executiontime) ASC;

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-01 22:42:40

代码语言:javascript
复制
        -- CTE to the rescue!!!
WITH cal AS (
        SELECT generate_series('2012-02-02 00:00:00'::timestamp , '2012-03-02 05:00:00'::timestamp , '1 hour'::interval) AS stamp
        )
, qqq AS (
        SELECT date_trunc('hour', executiontime) AS stamp
        , count(*) AS zcount
        FROM mytable
        GROUP BY date_trunc('hour', executiontime)
        )
SELECT cal.stamp
        , COALESCE (qqq.zcount, 0) AS zcount
FROM cal
LEFT JOIN qqq ON cal.stamp = qqq.stamp
ORDER BY stamp ASC
        ;
票数 1
EN

Stack Overflow用户

发布于 2012-08-01 22:28:09

Look this。其思想是生成包含该时间段日期的数组或表,并与作业执行表连接。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11761171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档