Postgres统计GROUP BY中的唯一结果

时间:2016-08-30 11:23:56

标签: sql postgresql group-by

我有一张桌子:

id | parent_id  |    create_time  
---|------------|--------------------  
1  |     1      | 2016-08-26 00:00:00  
2  |     2      | 2016-08-24 00:00:00  
3  |     2      | 2016-08-22 00:00:00  
4  |     4      | 2016-07-26 00:00:00  
5  |     5      | 2016-07-24 00:00:00

我需要为每个月(周,日)计算唯一的'parent_id' 输出如下:

---------------------|----  
2016-08-01 00:00:00  |  2  
2016-07-01 00:00:00  |  2

但我只能这样做:

SELECT date_trunc('month', create_time),count(parent_id) FROM test GROUP BY
date_trunc('month', create_time),parent_id

结果:

--------------------|---
2016-07-01 00:00:00 | 1
2016-07-01 00:00:00 | 1
2016-08-01 00:00:00 | 1
2016-08-01 00:00:00 | 2

我尝试了很多选择,但没有足够的知识。

2 个答案:

答案 0 :(得分:1)

您需要从parent_id子句中删除group by。你可能也想使用count(distinct parent_id)

SELECT date_trunc('month', create_time),
       count(distinct parent_id) 
FROM test 
GROUP BY date_trunc('month', create_time)

答案 1 :(得分:0)

尝试使用

SELECT date_trunc('month', create_time),count(distinct parent_id) FROM test GROUP BY
date_trunc('month', create_time)