我有一个超越我的基本知识的极具挑战性的MySQL问题,我将非常感谢您的帮助。
我目前有以下查询:
select users.userid, CAST(posts.time AS DATE)
FROM users INNER JOIN posts ON users.post_id = posts.id
样本输出:
userid | CAST(posts.time AS DATE)
1............2015-01-05
2............2015-02-06
2............2015-04-07
2............2015-04-07
3............2015-04-07
1............2015-02-06
7............2015-01-05
userid可以重复自己,userid = 1可能有10个不同的行;日期列也是如此。我想计算每个用户ID在每个不同的日期中有多少行。根据以上数据,输出应为:
-----------------------1----------2--------3---------4--------5--------6-------7
2015-01-05.............1..........0........0.........0........0........0.......1
2015-02-06.............1..........1........0.........0........0........0.......0
2015-04-07.............0..........2........1.........0........0........0.......0
我总共有7位用户。我想进一步用我定义的名称替换用户ID;例如,我将在标题/标题中定义1以显示为Mike,将2定义为George,依此类推...
可能吗?感谢大家。
如果您只有7个用户,而且只有一个用户,那么轮换数据就不太困难了:
select date(posts.time),
count(case when userid = 1 then userid end) as `1`,
count(case when userid = 2 then userid end) as `2`,
count(case when userid = 3 then userid end) as `3`,
count(case when userid = 4 then userid end) as `4`,
count(case when userid = 5 then userid end) as `5`,
count(case when userid = 6 then userid end) as `6`,
count(case when userid = 7 then userid end) as `7`
users INNER JOIN posts ON users.post_id = posts.id
group by date(posts.time)
如果您的用户数量多变或易于更改-这会很烦人,那么您最好使用您的应用程序语言来解决它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句