sql - Postgres 计算 GROUP BY 中的唯一结果

标签 sql postgresql group-by

我有一张 table :

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

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

最佳答案

您需要从 group by 子句中删除 parent_id。您可能还想使用 count(distinctparent_id) :

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

关于sql - Postgres 计算 GROUP BY 中的唯一结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39226184/

相关文章:

SQL 查询获取给定日期的有效数据

sql - 'end' 附近的语法不正确

sql - 在 pgSQL 上获取内部服务器错误

postgresql - 如何备份 PostgreSQL 数据库并在 Digital Ocean(Ubuntu) 中找到备份数据库的位置

带最小计数的 MYSQL 数据库选择

mysql - 通过 phPMYadmin 查询 WordPress 的链接文本

sql - 如何将 json 文件排序到 postgres 表中?

php - 如何加速我的 php PSQL 查询

mysql - 从mysql中的一行中检索最大值时获取其他字段

带有聚合列的每组 SQL 最新记录