我有下表
cust_id | category | counts
1 | food | 2
1 | pets | 5
3 | pets | 3
我想得到这个输出
cust_id | food_count | pets_count
1 | 2 | 5
3 | 0 | 3
其中列数映射category
列中的所有唯一值。你知道在Presto SQL中如何做到这一点吗?如果我在pySpark中这样做,我会使用CountVectorizer,但我在SQL方面有点吃力。
您可以在条件下使用GROUP BY和sum。例如使用if
函数:
-- sample data
WITH dataset (cust_id, category, counts) AS (
VALUES (1, 'food', 2),
(1, 'pets', 5),
(3, 'pets', 3)
)
--query
select cust_id, sum(if(category = 'food', counts, 0)) food_counts, sum(if(category = 'pets', counts, 0)) pets_counts
from dataset
group by cust_id
输出:
cust_id | food_counts | pets_counts|
---|---|---|
1 | 2 | 5 |
3 | 0 | 3