使用SQL,如何仅使用datetime来计算每个ID(列)每个月的行数,并将它们放在每月列中?
我对SQL比较陌生。我的数据集如下:使用SQL,如何仅使用datetime来计算每个ID(列)每个月的行数,并将它们放在每月列中?,sql,apache-spark-sql,Sql,Apache Spark Sql,我对SQL比较陌生。我的数据集如下: 'ID' 'date' 1 2016-01-01 01:01:06 2 2016-01-02 02:02:07 1 2016-01-03 03:03:08 3 2016-04-04 04:04:09 2 2016-04-05 05:05:00 我想获得如下smth: 'ID' 'Count: Jan' '
'ID' 'date'
1 2016-01-01 01:01:06
2 2016-01-02 02:02:07
1 2016-01-03 03:03:08
3 2016-04-04 04:04:09
2 2016-04-05 05:05:00
我想获得如下smth:
'ID' 'Count: Jan' 'Count: Feb' 'Count: March' 'Count: April'
1 2 0 0 0
2 1 0 1 0
3 0 0 0 1
我真的不知道该怎么办。我可以将创建列“month”和另一列“count”的数据放在一起,但我希望能够有这样一个表
提前感谢您可以使用条件聚合:
select id,
sum(case when month(date) = 1 then 1 else 0 end) as cnt_jan,
sum(case when month(date) = 2 then 1 else 0 end) as cnt_feb,
. . .
sum(case when month(date) = 12 then 1 else 0 end) as cnt_dec
from t
group by id;
这回答了你的问题吗?