2021-03-18 20:32:00.045294 2021-04-22 18:27:00.0452942021-03-18 20:32:00.0452942021-04-22 18:27:00.045294
我有一个名为textbankvendor的sql数据库。Messages_export从执行文本活动的组织发送的所有消息。
我在这个数据库中使用的相关列如下:
activity_title (varchar):单个消息所属的文本库的名称
message_segments (integer):消息中的段数(一个段是160个字符的分组)
activity_publishhed_at (timestamp):文本库发布的日期
那么数据库中一对行的例子是:
发布的活动没有出现在GROUPBY列表中的所有列必须以某种方式聚合。对于上面的表,您有两个选项:
- 通过功能保留相同的组,并为时间戳取任何值(只要它们在每个活动标题中是唯一的)
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
- 直接将时间戳按列放入组
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
列不一致。