将不同值的计数放入单行配置单元

iih3973s  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(317)

我有一张大致如下的table。。。

userid, productid, timestamp
1, 1, 2015-10-01 08:15:59
1, 2, 2015-10-01 08:16:59
2, 1, 2015-10-01 08:18:59
3, 1, 2015-10-01 08:19:59
1, 3, 2015-10-01 08:20:59
2, 1, 2015-10-01 08:21:59

我想要的输出如下。。。

user, product1Count, product2Count, product3Count
1, 1, 1, 1
2, 2, 0, 0
3, 1, 0, 0

到目前为止,我已经得到了以下信息。但我不知道如何把这个表,并为每个用户平展成一行。
查询:

Select user_id, product_id, count(*) 
from masampleinput
group by user_id, product_id

输出:

User, product, count
1, 1, 1
1, 2, 1
1, 3, 1
2, 1, 2
3, 1, 1
mklgxw1f

mklgxw1f1#

希望以下查询对您有所帮助:

select userid,
MAX(CASE WHEN productid = 1 THEN count ELSE null END) as product1count,
MAX(CASE WHEN productid = 2 THEN count ELSE null END) as product2count,
MAX(CASE WHEN productid = 3 THEN count ELSE null END) as product3count
from 
(Select user_id, product_id, count(*) 
from masampleinput
group by user_id, product_id)
GROUP BY userid

相关问题