加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

postgresql中的按日期聚合函数分组

发布时间:2020-12-13 18:09:50 所属栏目:百科 来源:网络整理
导读:我在运行此查询时遇到错误 SELECT date(updated_at),count(updated_at) as total_count FROM "persons"WHERE ("persons"."updated_at" BETWEEN '2012-10-17 00:00:00.000000' AND '2012-11-07 12:25:04.082224') GROUP BY date(updated_at)ORDER BY persons.
我在运行此查询时遇到错误
SELECT date(updated_at),count(updated_at) as total_count 
FROM "persons"
WHERE ("persons"."updated_at" BETWEEN '2012-10-17 00:00:00.000000' AND '2012-11-07     12:25:04.082224') 
GROUP BY date(updated_at)
ORDER BY persons.updated_at DESC

我得到错误ERROR:列“persons.updated_at”必须出现在GROUP BY子句中或用于聚合函数LINE 5:ORDER BY persons.updated_at DESC

这是有效的,如果我删除日期(逐个组中的功能,但我使用日期功能,因为我想按日期分组,而不是日期时间

有任何想法吗

目前还不清楚你希望Postgres返回什么.你说它应该由persons.updated_at命令,但你不从数据库中检索该字段.

我想,你想做的是:

SELECT date(updated_at),count(updated_at) as total_count 
FROM "persons"
WHERE ("persons"."updated_at" BETWEEN '2012-10-17 00:00:00.000000' AND '2012-11-07     12:25:04.082224') 
GROUP BY date(updated_at)
ORDER BY count(updated_at) DESC -- this line changed!

现在,您明确告诉数据库按COUNT聚合的结果值进行排序.您还可以使用:ORDER BY 2 DESC,有效地告诉数据库按结果集中的第二列排序.但是,为了清楚起见,我非常希望明确说明该列.

请注意,我目前无法测试此查询,但我认为这应该可行.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读