次のようなもの: SQL グループごとに既存の列の数に基づいて新しい列の値を作成する方法は?
しかし、私は 2 つ以上の異なる値を持っています。私は変数n個の個別の値を持っているので、私が持っている多くの異なるカウントがあることを常に知っているわけではありません.
そして、元のテーブルでは、「3」、「4」などの各行にカウントが必要です。つまり、「3」を含むすべての行は同じカウントになり、「4」を含むすべての行は同数など。
編集:また、異なる日付、つまり「2017-07-19」で個別の値ごとにカウントを分割するにはどうすればよいですか?
edit2:これが私がやった方法ですが、今は別の日付に分割する必要があります。
edit3:これは、日付で分割する方法です。
#standardSQL
SELECT * FROM
(SELECT * FROM table1) main
LEFT JOIN (SELECT event_date, value, COUNT(value) AS count
FROM table1
GROUP BY event_date, value) sub ON main.value=sub.value
AND sub.event_date=SAFE_CAST(main.event_time AS DATE)
edit4: PARTITION BY がどこかでより適切に文書化されていることを望みます。BigQuery や詳細なドキュメントについて広く書かれているものはないようです
#standardSQL
SELECT
*,
COUNT(*) OVER (PARTITION BY event_date, value) AS cnt
FROM table1;