私はグループ化されたいくつかの日時と複数のプロパティを持つテーブルを持っており、集計するものもあります。クエリは先週の顧客1人当たりの収益を得るようなものになります。 これで、要求された期間と以前の期間との間の変更を確認したいので、私は2列のrevenueとprevious_revenueを持ちます。他のフィールドに応じた集計値
今は要求期間の行に前期間の行を加えたものを要求しています。集約フィールドごとに、値を返すcase文を追加します。そうでない場合は0を返します。
これは、集約フィールドと同じ数のCASEを導きますが、常に同じ条件文を持ちます。
このユースケースのためのより良い設計がある場合、私は思ったんだけど...
SELECT
customer,
SUM(
CASE TIMESTAMP_CMP('2016-07-01 00:00:00', ft.date) > 0 WHEN true THEN
REVENUE
ELSE 0 END
) AS revenue,
SUM(
CASE TIMESTAMP_CMP('2016-07-01 00:00:00', ft.date) < 0 WHEN true THEN
REVENUE
ELSE 0 END
) AS previous_revenue
WHERE date_hour >= '2016-06-01 00:00:00'
AND date_hour <= '2016-07-31 23:59:59'
GROUP BY customer