SELECT *
FROM hoge
-- hoge_dateが、2016-10-12から2016-10-13までのデータに絞り込み
-- WHERE hoge_date BETWEEN '2016-10-12' AND '2016-10-13'
-- サンプリング: 乱数を生成し、0.5以下のデータ行のみ絞り込み
-- WHERE RANDOM() <= 0.5
-- WITH句によって、一時テーブルreserve_tb_randomを生成
WITH hoge_random AS(
SELECT
*,
-- customer_idに対して一意の値となる乱数の生成
-- 生成した乱数をcustomer_idごとにまとめて、1番目の値を取り出す
FIRST_VALUE(RANDOM()) OVER (PARTITION BY customer_id) AS random_num
FROM hoge
)
-- *ですべての列を抽出しているが、random_numを外したい場合は列を指定する必要あり
SELECT *
FROM hoge_random
-- 50%サンプリング、customer_idごとに設定された乱数が0.5以下の場合に抽出
WHERE random_num <= 0.5