Presto SQL类别计数器



我有下表

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

输出:

pets_counts3
cust_idfood_counts
125
30

相关内容

  • 没有找到相关文章

最新更新