gpt4 book ai didi

postgresql - 从 access_log 表中获取数据时出现 Postgres 错误

转载 作者:行者123 更新时间:2023-11-29 12:24:39 26 4
gpt4 key购买 nike

错误:使用子查询时,列access_log.id必须出现在GROUP BY子句中或用于聚合函数]

select
to_char(date_trunc('day',create_time),'DD MON, YYYY') as create_time,
to_char((max(create_time) - min(create_time)),'HH24:mi') as time_spent,
id
from
access_log
group by
user_id, actionlink_id, date_trunc('day',create_time)

最佳答案

access_log.id 对于该表中的每一行都是唯一的,因此您不太可能获得有用的信息,包括查询中的信息。我相信您打算改为通过 user_id 来执行此操作。但是错误消息告诉您的是事实,如果您在 select 子句 中包含 id,它也应该出现在 group by 子句。继续阅读:

将您的select 子句 中的每个项目视为分为两种类型:

  1. 聚合这些是MIN MAX COUNT AVG 和类似的职能
  2. non-aggregating 这些是没有这些功能的,正是这些决定了行的形成方式。 这些非聚合项中的每一项都应出现在 group by 子句中。这些列中的信息随后用于创建最终结果的行结构。例如,不再是一天中每个时间的行,现在行将是“每天”,因为您将 date_trunc('day',create_time) 包含在 group by 子句中
select      user_id ---- changed this to user_id    , actionlink_id  --- & added this     , to_char(date_trunc('day',create_time),'DD MON, YYYY') as create_time    , to_char((max(create_time) - min(create_time)),'HH24:mi') as time_spent    , MAX(id) as max_idfrom     access_loggroup by -- all non-aggregating select clause items go here    user_id  , actionlink_id  , date_trunc('day',create_time)

关于postgresql - 从 access_log 表中获取数据时出现 Postgres 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47132637/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com