メインコンテンツへスキップ
メインコンテンツへスキップ

anyIf

説明

If コンビネーターは、any 集約関数に適用して、指定した条件に一致する要素のうち、指定したカラム内で最初に出現したものを 選択します。

使用例

この例では、成功フラグを含む売上データを格納するテーブルを作成し、 anyIf を使用して、金額 200 をしきい値としてそれより大きい場合と小さい場合の 最初の transaction_id を選択します。

まず、テーブルを作成してデータを挿入します。

CREATE TABLE sales(
    transaction_id UInt32,
    amount Decimal(10,2),
    is_successful UInt8
) 
ENGINE = MergeTree()
ORDER BY tuple();

INSERT INTO sales VALUES
    (1, 100.00, 1),
    (2, 150.00, 1),
    (3, 155.00, 0),
    (4, 300.00, 1),
    (5, 250.50, 0),
    (6, 175.25, 1);
SELECT
    anyIf(transaction_id, amount < 200) AS tid_lt_200,
    anyIf(transaction_id, amount > 200) AS tid_gt_200
FROM sales;
┌─tid_lt_200─┬─tid_gt_200─┐
│          1 │          4 │
└────────────┴────────────┘

関連項目