Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 为列中的变量计数添加列_Sql_Apache Spark_Pivot - Fatal编程技术网

Sql 为列中的变量计数添加列

Sql 为列中的变量计数添加列,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列作为它们的计数列。 我想

在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 | 2
您可以为此使用条件聚合:

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']来保证完整性。”“也帮我。