繁体   English   中英

MySQL按列分组,然后按另一列计数

[英]MySQL Group by column, then count by another column

我有一个超越我的基本知识的富有挑战性的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)

在这里演示

如果您的用户数量多变或易于更改-这会很烦人,那么您最好使用您的应用程序语言来解决。

这是我所拥有的(我没有为您完成):

SELECT date, SUM(id_1) AS Mike, SUM(id_2) AS George FROM (SELECT CASE id WHEN 1 THEN 1 ELSE 0 END as id_1, CASE id WHEN 2 THEN 1 ELSE 0 END as id_2, date FROM test_dates) as tmp GROUP BY date;

+------------+------+--------+
| date       | Mike | George |
+------------+------+--------+
| 2015-01-05 |    1 |      0 |
| 2015-02-06 |    1 |      1 |
| 2015-04-07 |    0 |      2 |
+------------+------+--------+

当您想要的是计数时,用总和1s代替的技巧是一个值得记住的常见报告技巧。 当我第一次看到它时,我的脑海就震撼了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM