0
我有一個有一個字段包含true和false值的排序表。我要新增每次發生真正價值的時間增量的ID類型字段:BigQuery SQL - 基於條件的增量ID
我怎麼會去這樣做呢?我可以爲組ID存儲某種變量,還是需要以某種方式返回查詢上一行?
我有一個有一個字段包含true和false值的排序表。我要新增每次發生真正價值的時間增量的ID類型字段:BigQuery SQL - 基於條件的增量ID
我怎麼會去這樣做呢?我可以爲組ID存儲某種變量,還是需要以某種方式返回查詢上一行?
您可以使用sum
窗口函數和case
表達式來執行此操作。
select t.*,sum(case when condition='TRUE' then 1 else 0 end) over(order by somecolumn) as groupid
from tbl t
消除相對較重sum(case when ...)
- 你可以在例如
countif
#standardSQL
SELECT *, COUNTIF(condition) OVER(ORDER BY pos) AS groupid
FROM `yourTable`
你可以用這個來使用你的虛擬數據如下玩。
#standardSQL
WITH `yourTable` AS (
SELECT TRUE AS condition, 1 AS `group`, 1 AS pos UNION ALL
SELECT FALSE, 1, 2 UNION ALL
SELECT FALSE, 1, 3 UNION ALL
SELECT TRUE, 2, 4 UNION ALL
SELECT FALSE, 2, 5 UNION ALL
SELECT FALSE, 2, 6 UNION ALL
SELECT FALSE, 2, 7 UNION ALL
SELECT TRUE, 3, 8 UNION ALL
SELECT FALSE, 3, 9 UNION ALL
SELECT TRUE, 4, 10 UNION ALL
SELECT TRUE, 5, 11 UNION ALL
SELECT FALSE, 5, 12 UNION ALL
SELECT FALSE, 5, 13 UNION ALL
SELECT FALSE, 5, 14
)
SELECT *, COUNTIF(condition) OVER(ORDER BY pos) AS groupid
FROM `yourTable`
非常感謝:) – apkdsmith