簡體   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