Presto SQL 类别计数器
Presto SQL category counter
我有以下table
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 和条件求和。例如使用 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
我有以下table
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 和条件求和。例如使用 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 |