使用Postgres 9.3.2,我希望得到req_status
的计数,并按req_time
和customer_id
分组,并为每个customer_id
返回一组 n 行,即使req_status
计数为零。
req_time req_id customer_id req_status
-----------------------------------------------
2014-03-19 100 1 'FAILED'
2014-03-19 102 1 'FAILED'
2014-03-19 105 1 'OK'
2014-03-19 106 2 'FAILED'
2014-03-20 107 1 'OK'
2014-03-20 108 2 'FAILED'
2014-03-20 109 2 'OK'
2014-03-20 110 1 'OK'
输出量
req_time customer_id req_status count
-------------------------------------------
2014-03-19 1 'FAILED' 2
2014-03-19 1 'OK' 1
2014-03-19 2 'FAILED' 1
2014-03-19 2 'OK' 0
2014-03-20 1 'FAILED' 0
2014-03-20 1 'OK' 2
2014-03-20 2 'FAILED' 1
2014-03-20 2 'OK' 1
我如何才能做到这一点?
2条答案
按热度按时间5kgi1eie1#
要查看结果中缺少的行,请将
LEFT JOIN
添加到可能行的完整网格。网格由(req_time, customer_id, req_status)
的所有可能组合构建:对实际表中的列进行计数,如果没有找到匹配项,则计数值为0(空值不计数)。
假设
req_time
是date
(不是timestamp
)。相似:
4uqofj5v2#
SQL Fiddle