私は、毎週バージョンタイプで自分のデータに表示される個別のIDを数えようとしており、クエリを正しく構築する方法がわかりません。グループ化された時間以上のケースでカウントする
私はの線に沿ってテーブルを生成するために願っています:私は、以下のクエリを作り上げる試みた
1.1 1.2 1.3 1.4
wk1 1 5 4 8
wk2 4 3 9 8
wk3 1 8 0 6
が、それはどのその後、によって、グループ内のCaseステートメントを必要として、それは実行されませんcount()を受け付けません。
SELECT
Case when version like "1.1%" then Count(distinct ID)
when version like "1.2%" then Count(distinct ID)
when version like "1.3%" then Count(distinct ID)
when version like "1.4%" then Count(distinct ID) end,
CAST(((datediff(timestamp_pst,'2016-01-03')/7)+1) as INT) as week_of_the_year
FROM db.table
where timestamp_pst >= "2016-01-28"
group by CAST(((datediff(timestamp_pst,'2016-01-03')/7)+1) as INT)
order by week_of_the_year
あなたは 'SUM(CASE WHEN ... THEN 1 ELSE 0 END)x ...'のようなものを望んでいません(アプリケーションコードでこの種のことを処理しますが)。 – Strawberry
@Strawberry - これを実行します列リストが固定されていてもアプリ側 –
@Strawberry IDが繰り返されるIDが繰り返される場合、COUNT(DISTINCT)はSUMと同じ結果を得られません(COUNT()と同等です)。 – Matt