如何将时间戳列合并到已经使用聚合函数的查询中?



我有一个名为textbankvendor的sql数据库。Messages_export从执行文本活动的组织发送的所有消息。

我在这个数据库中使用的相关列如下:

activity_title (varchar):单个消息所属的文本库的名称

message_segments (integer):消息中的段数(一个段是160个字符的分组)

activity_publishhed_at (timestamp):文本库发布的日期

那么数据库中一对行的例子是:

发布的活动2021-03-18 20:32:00.0452942021-04-22 18:27:00.0452942021-03-18 20:32:00.0452942021-04-22 18:27:00.045294

没有出现在GROUPBY列表中的所有列必须以某种方式聚合。对于上面的表,您有两个选项:

  1. 通过功能保留相同的组,并为时间戳取任何值(只要它们在每个活动标题中是唯一的)
SELECT 
activity_title
, SUM (message_segments) AS "cumulative_message_segments"
, ANY_VALUE(activity_published_at) as activity_published_at
FROM textbankvendor.messages_export
GROUP BY 1
ORDER BY 1
  1. 直接将时间戳按列放入组
SELECT 
activity_title
, activity_published_at
, SUM (message_segments) AS "cumulative_message_segments"
FROM textbankvendor.messages_export
GROUP BY 1, 2
ORDER BY 1

如果您想要每个活动标题一行,我建议:

SELECT activity_title,
SUM(message_segments) AS cumulative_message_segments,
MIN(activity_published_at) as activity_published_at
FROM textbankvendor.messages_export
GROUP BY 1
ORDER BY 1;

您查询的问题是SELECT列与GROUP BY列不一致。

相关内容

  • 没有找到相关文章

最新更新