【发布时间】:2022-09-30 14:38:56
【问题描述】:
我有下表:
| beverage | country | units_a_sold | units_b_sold |
| -------- | ------- | ------------ | ------------ |
| fanta | US | 184 | 209 |
| fanta | DE | 0 | 400 |
| fanta | UK | 309 | 107 |
| pepsi | US | 0 | 890 |
| pepsi | DE | 0 | 345 |
| pepsi | UK | 0 | 193 |
我想了解每种饮料类型的最大销售量所在的国家/地区。优先考虑a。 如果没有以 a 出售的单位,我们从以 b 出售的最大单位中取国家。
因此,对于芬达,我们将拥有英国,而对于百事可乐,我们将拥有美国
我有这样的事情:
WITH temp AS (
SELECT *
, RANK() OVER (PARTITION BY app_id ORDER BY units_a_sold DESC) rnk_a
, RANK() OVER (PARTITION BY app_id ORDER BY units_B_sold DESC) rnk_b
FROM table
)
SELECT DISTINCT beverage
, CASE
WHEN units_a_sold > 0 THEN (...)
FROM temp
WHERE rnk = 1;
有任何想法吗?
【问题讨论】:
标签: mysql sql hive window-functions presto