mysql - MySQL查询为多列生成频率计数
问题描述
我在 MySQL 中有一个表,其中三列保存不同进程的持续时间:
A B C
--------------
1 3 5
1 6 3
4 7 6
2 4 3
我想查询以获取所有 3 个处理时间的频率计数(因此我最终可以在直方图中比较它们),如下所示:
seconds A B C
--------------------------
1 2 0 0
2 1 0 0
3 0 1 2
4 1 1 0
5 0 0 1
6 0 1 1
7 0 1 0
到目前为止,我想出的解决方案是创建三个单独的表来执行 count(*) 然后合并它们,但我觉得必须有一个更清洁的方法。
解决方案
您可以使用union all
和聚合:
select
sec,
sum(tab = 'a') a,
sum(tab = 'b') b,
sum(tab = 'c') c
from (
select 'a' tab, a sec from mytable
union all select 'b', b from mytable
union all select 'c', c from mytable
) t
group by sec
order by sec
秒 | 一个 | 乙 | C --: | -: | -: | -: 1 | 2 | 0 | 0 2 | 1 | 0 | 0 3 | 0 | 1 | 2 4 | 1 | 1 | 0 5 | 0 | 0 | 1 6 | 0 | 1 | 1 7 | 0 | 1 | 0
推荐阅读
- javascript - Angular 无法设置 http 标头,只能使用拦截器
- java - java/lang/Runtime.exec([Ljava/lang/String;)Ljava/lang/Process; 的这种用法 可能容易受到命令注入
- swift - Swift - 使用 GTMAppAuth 授权谷歌日历 API?
- spring-boot - 浮动字段值在弹簧启动中始终显示为 0.0
- sql - RPG Distinct 和 Join SQL 语句的问题
- authentication - 如何更改“.AspNetCore.Identity.Application”cookie 过期时间?
- matlab - 在循环中使用 surf 和来自 struct 的数据
- c++ - 如何将对象数据存储到文件中
- iphone - Favicon 未在 Safari(iOS 12 13)中显示,但在 Chrome(Android 和 PC)中正常显示
- eclipse - eclipse-cdt 自动生成奇怪的 getter 名称