Sql 为列中的变量计数添加列
在ApacheSpark中,我有一个dataframe,其中“category”列始终是“a”或“b” user_id | category ==================== 1 | a 1 | a 1 | b 2 | a 2 | b 2 | b 用户id |类别 ==================== 1 | a 1 | a 1 | b 2 | a 2 | b 2 | b 我想把a列和b列作为它们的计数列。 我想要的结果如下 user_id | a | b =============== 1 | 2 | 1 2 | 1 | 2 用户id | a | b =============== 1 | 2 | 1 2 | 1 | 2Sql 为列中的变量计数添加列,sql,apache-spark,pivot,Sql,Apache Spark,Pivot,在ApacheSpark中,我有一个dataframe,其中“category”列始终是“a”或“b” user_id | category ==================== 1 | a 1 | a 1 | b 2 | a 2 | b 2 | b 用户id |类别 ==================== 1 | a 1 | a 1 | b 2 | a 2 | b 2 | b 我想把a列和b列作为它们的计数列。 我想
您可以为此使用条件聚合:
SELECT user_id,
COUNT(CASE WHEN category = 'a' THEN 1 END) AS a
COUNT(CASE WHEN category = 'b' THEN 1 END) AS b
FROM mytable
GROUP BY user_id
您可以为此使用条件聚合:
SELECT user_id,
COUNT(CASE WHEN category = 'a' THEN 1 END) AS a
COUNT(CASE WHEN category = 'b' THEN 1 END) AS b
FROM mytable
GROUP BY user_id
这样做无需事先知道
a
和b
:
df.groupBy($"id").pivot("category").count().show
这样做无需事先知道
a
和b
:
df.groupBy($"id").pivot("category").count().show
谢谢大家。
为了完整性,我使用了pivot方法和list['a','b']
df.groupBy($"id").pivot("category", ['a', 'b']).count().show
谢谢大家。
为了完整性,我使用了pivot方法和list['a','b']
df.groupBy($"id").pivot("category", ['a', 'b']).count().show
检查计数、分组依据和透视。。。这是一个简单的查询,你可以做到这一点,如果你有困难后,尝试,回来,我会帮你检查计数,分组方式和枢轴。。。这是一个简单的查询,您也可以这样做。如果您在尝试后遇到问题,请回来,我将帮助您解决此问题。您需要预先知道
类别
的所有可能值。@DavidGriffin。问题很清楚:“'category'总是'a'或'b'”。使用此解决方案,您需要预先知道category
的所有可能值。@DavidGriffin。问题很清楚:“‘类别’总是‘a’或‘b’”。谢谢你的回答df.groupBy($“id”).pivot(“category”,['a','b']).count().show()
我使用pivot方法和list['a','b']来保证完整性。”“也帮我,谢谢你的回答df.groupBy($“id”).pivot(“category”,['a','b']).count().show()
我使用pivot方法和list['a','b']来保证完整性。”“也帮我。