Article Outline
🔍 QUALIFY句
TOC
Collection Outline
句(節)
演算子
関数
入門 @Udemy
DS100ノック
ML
アクセス解析
|| QUALIFY 句
QUALIFY bool_expression
QUALIFY 句は、分析関数の結果をフィルタリングします。
分析関数は QUALIFY 句または SELECT リストに存在する必要があります。
bool_expression が TRUE と評価された行のみが含まれます。
bool_expression が NULL または FALSE と評価された行は破棄されます。
| 実行順序
QUALIFY 句を使用したクエリの評価は、通常、次の順序で完了します。
- FROM
- WHERE
- GROUP BY と集計
- HAVING
- WINDOW
- QUALIFY ← ココ!
- DISTINCT
- ORDER BY
- LIMIT
with
score_with_rank as (
select
student_id
, class
, score
, rank() over(
partition by class
order by score desc
) as rank
from
scores
)
select
*
from
score_with_rank
where
rank >= 3
;
(↑コレが、こう↓)
/* with句による多重ネスト回避時に使える */
select
student_id
, class
, score
, rank() over (
partition by class
order by score desc
) as rank
from
scores
where true
qualify rank >= 3
;
i.e.
qualify句を使用する場合、以下のいずれかがクエリ内で使用されている必要がある。
よって、いずれにも該当しない場合は、面倒だが今回のように where true のような指定をすることになる。
・where
・group by
・having
/* 絞込要因で、SELECT句持ちしたくない時に使える */
select
student_id
, class
, score
from
scores
qualify
rank() over (partition by class order by score desc) = 1 -- rank 1
;
|| REFERENCE
- QUALIFY 句 - GoogleCloud
- BigQueryのqualify句の使い方 - Zenn
- tips9: preview 機能を楽しむ - 原理的には可能