Ich muss für jeden Titel den durchschnittlichen Umsatz zwischen 2019 und 2021 generieren. Es gibt 2 Eingabetabellen:
Title Table Title_id Title_type Price_per 1 tv 10 2 book 50 3 cd 20 Transactions table(trans) tran_id Title_id Qty year 1 3 2 2019 2 1 1 2019 3 3 5 2020 4 3 3 2020 5 1 10 2021
Das erwartete Ergebnis sollte die folgenden Spalten generieren:
Title_id|Avg_sales_2019|Avg_sales_2020|Avg_sales_2021 title_id avg_sales_2019 avg_sales_2020 avg_sales_2021 1 10.0 NULL 100.0 3 40.0 80.0 NULL
Ich habe die folgende Abfrage verwendet, aber sie generiert nicht die erwartete Ausgabe
select a.title_id, case when a.year=2019 then avg end as Avg_sales_2019, case when a.year=2020 then avg end as Avg_sales_2020, case when a.year=2021 then avg end as Avg_sales_2021 from (Select t.title_id, x.year, AVG(t.Price_per*x.Qty) as avg from title t join trans x on t.title_id=x.title_id group by t.title_id,x.year) a; title_id avg_sales_2019 avg_sales_2020 avg_sales_2021 1 10.0 NULL NULL 1 NULL NULL 100.0 3 40.0 NULL NULL 3 NULL 80.0 NULL
So kombinieren Sie Zeilen mit einer bestimmten Titel-ID, um das erwartete Ergebnis zu erhalten
Hinweis: Ich führe die Abfrage in Hive aus
使用条件聚合: