SELECT
s1.sales_date,
s1.country,
s1.sales_volume,
s2.fix_costs
FROM sales s1
JOIN sales s2 ON s1.country <> 'None' AND s2.country = 'None'
AND date_trunc('month', s1.sales_date) = date_trunc('month', s2.sales_date)
自然な自己結合が必要です。参加条件は次のとおりです。
- 最初のテーブルなし
None
レコード(s1.country <> 'None'
) - 2番目のテーブルのみ
None
レコード(s2.country = 'None'
) - 日付:年と月の部分のみを考慮し、日は無視します。これは、
date_trunc()
を使用して、両方のテーブルの日付を月の最初に正規化することで実現できます。 。だから、例えば'2020-02-15'
結果は'2020-02-01'
および'2020-02-29'
結果は'2020-02-01'
比較や結合条件としてもうまく機能します。
または :
SELECT
*
FROM (
SELECT
sales_date,
country,
sales_volume,
SUM(fix_costs) OVER (PARTITION BY date_trunc('month', sales_date)) as fix_costs
FROM sales
) s
WHERE country <> 'None'
SUM()
を使用できます date_trunc()
のグループに対するウィンドウ関数 上記のように。次に、None
をフィルタリングする必要があります その後の記録