使用SQL,如何仅使用datetime来计算每个ID(列)每个月的行数,并将它们放在每月列中?

使用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' '

我对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'     '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;

这回答了你的问题吗?