繁体   English   中英

SQL/BigQuery:当语句通过分区时的情况

[英]SQL/BigQuery: case when statement over partition by

我有一张关于对话的桌子。 唯一对话 ID 有许多对话元素

conv_id element_id 作者类型 部分类型
1 11 机器人 评论
1 12 机器人 评论
2 22 机器人 评论
2 23 机器人 评论
2 24 行政 笔记
3 32 机器人 笔记

我想为每个对话 id 写一个 case when 语句,-> 如果 author_type 是 'bot' 并且 part_type 是 'comment',那么 label 它在该对话 id 的所有行的新列中作为 'bot'。

所以结果将如下所示:

conv_id element_id 作者类型 部分类型 标签
1 11 机器人 评论 机器人
1 12 机器人 评论 机器人
2 22 机器人 评论 机器人
2 23 机器人 评论 机器人
2 24 行政 笔记 机器人
3 32 机器人 笔记

例如,当 conv_id 为 2 时,即使其中一行不符合条件,它也会写入“bot”。

我试过这段代码,但它不起作用,并且错误消息是'over keyword must follow a function call'。

CASE
when
author_type = 'bot' and part_type = 'comment'
then 'bot'
over (partition by conversation_id)
end as tag

谢谢

我编辑了帖子并更改了一个条件。

考虑下面的查询。

如果 author_type 是 'bot' 而 part_type 是 'comment',那么 label 在该对话 id 的所有行的新列中将其作为 'bot'。

SELECT *,
       MAX(IF(author_type = 'bot' AND part_type = 'comment', 'bot', NULL)) OVER (PARTITION BY conv_id) AS tag
  FROM sample_table
 ORDER BY conv_id

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2025 STACKOOM.COM