[提前批]求教一道SQL题,看起来很简单的。。

统计每个用户购买A,B商品金额
user_id, item_id, money
结果示例:
用户        A        B
用户1 30 20
用户2 50 100
#MySQL#
全部评论
这样不行吗,为什么上面的写得那么复杂。。 SELECT a.user_id ,           sum(CASE               WHEN a.item_id="A" THEN a.s esle NULL           END) AS A,           sum(CASE               WHEN a.item_id="B" THEN a.s esle NULL           END) AS B    FROM table GROUP BY user_id
3
送花
回复 分享
发布于 2020-07-18 21:47
用where把ab商品过滤出来然后以商品和用户分组不就行了,话说你这表名都不给
点赞
送花
回复 分享
发布于 2020-07-18 18:37
国泰君安
校招火热招聘中
官网直投
一个left join 一个right join然后union?有点复杂。。 select t1.user_id user_id, t1.money A_money, t2.money B_money from  (select user_id, money from test1 where item_id=1) t1 left join  (select user_id, money from test1 where item_id=2) t2 on t1.user_id = t2.user_id union select t2.user_id user_id, t1.money A_money, t2.money B_money from  (select user_id, money from test1 where item_id=1) t1 right join  (select user_id, money from test1 where item_id=2) t2 on t1.user_id = t2.user_id
点赞
送花
回复 分享
发布于 2020-07-18 20:27
SELECT b.* FROM   (SELECT a.user_id ,           CASE               WHEN a.item_id="A" THEN a.s esle NULL           END AS A,           CASE               WHEN a.item_id="B" THEN a.s esle NULL           END AS B    FROM      (SELECT user_id,              item_id,              sum(amount) AS s       FROM tb       WHERE item_id = 'A&(314)#39;        &nbs***bsp;item_id = 'B'       GROUP BY user_id,                item_id)) b WHERE b.A IS NOT NULL   AND b.B IS NOT NULL
点赞
送花
回复 分享
发布于 2020-07-18 21:04

相关推荐

1 2 评论
分享
牛客网
牛客企业服务