に基づいてインクリメントIDは、私は真と偽の値を含む一つのフィールドでソートされたテーブルを持っています。私はこれを行うに行くかどうBigQueryのSQL - 条件
:私は真の値が発生するたびにインクリメントIDタイプフィールドを追加したいですか?私は、グループIDのための変数のいくつかの種類を格納することができますか私は何とか戻って前の行を照会する必要があるでしょうか?
に基づいてインクリメントIDは、私は真と偽の値を含む一つのフィールドでソートされたテーブルを持っています。私はこれを行うに行くかどうBigQueryのSQL - 条件
:私は真の値が発生するたびにインクリメントIDタイプフィールドを追加したいですか?私は、グループIDのための変数のいくつかの種類を格納することができますか私は何とか戻って前の行を照会する必要があるでしょうか?
あなたはこれを行うにはcase
式でsum
ウィンドウ関数を使用することができます。あなたは、これは以下のようにあなたのダミーデータを使用して再生することができますたとえば、以下の
#standardSQL
SELECT *, COUNTIF(condition) OVER(ORDER BY pos) AS groupid
FROM `yourTable`
のようにcountif
を使用することができます - 比較的重いsum(case when ...)
を排除する
select t.*,sum(case when condition='TRUE' then 1 else 0 end) over(order by somecolumn) as groupid
from tbl t
。
#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