我认为您需要另一个查询来解决它,例如使用同一个表的左外连接来存档它。
您的数据和其他一些数据。
date | stats
-------------
10/1 | 2
10/1 | 3
10/1 | 2
10/2 | 1
10/3 | 3
10/3 | 2
10/4 | 1
10/4 | 1
10/7 | 2
10/8 | 3
10/9 | 2
10/10 | 4
10/10 | 3
10/10 | 2
10/11 | 1
10/12 | 4
我通过这个查询来获取示例数据:
SELECT unnest(array[ '2015/10/1','2015/10/1','2015/10/1','2015/10/2','2015/10/3','2015/10/3','2015/10/4','2015/10/4',
'2015/10/7', '2015/10/8', '2015/10/9', '2015/10/10', '2015/10/10', '2015/10/10', '2015/10/11', '2015/10/12'])::date as date,
unnest(array[ 2, 3, 2, 1, 3, 2, 1, 1,
2, 3, 2, 4, 3, 2, 1, 4]) as stats
) AS F
现在我进行查询以获取您需要的数据:
SELECT f.date, count(distinct f.stats), count(distinct x.stats)
FROM (
SELECT unnest(array[ '2015/10/1','2015/10/1','2015/10/1','2015/10/2','2015/10/3','2015/10/3','2015/10/4','2015/10/4',
'2015/10/7', '2015/10/8', '2015/10/9', '2015/10/10', '2015/10/10', '2015/10/10', '2015/10/11', '2015/10/12'])::date as date,
unnest(array[ 2, 3, 2, 1, 3, 2, 1, 1,
2, 3, 2, 4, 3, 2, 1, 4]) as stats
) AS F
LEFT OUTER JOIN (SELECT unnest(array[ '2015/10/1','2015/10/1','2015/10/1','2015/10/2','2015/10/3','2015/10/3','2015/10/4','2015/10/4',
'2015/10/7', '2015/10/8', '2015/10/9', '2015/10/10', '2015/10/10', '2015/10/10', '2015/10/11', '2015/10/12'])::date as date,
unnest(array[ 2, 3, 2, 1, 3, 2, 1, 1,
2, 3, 2, 4, 3, 2, 1, 4]) as stats) AS x
ON x.date BETWEEN f.date - INTERVAL '3 DAYS' AND f.date
GROUP BY f.date
结果:
date;today;last three day
"2015-10-01";2;2
"2015-10-02";1;3
"2015-10-03";2;3
"2015-10-04";1;3
"2015-10-07";1;2
"2015-10-08";1;2
"2015-10-09";1;2
"2015-10-10";3;3
"2015-10-11";1;4
"2015-10-12";1;4
我希望这个解决方案会有所帮助。