gpt4 book ai didi

MySQL 查询生成多列的频率计数

转载 作者:行者123 更新时间:2023-11-29 06:26:12 25 4
gpt4 key购买 nike

我在 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

Demo on DB Fiddle :

sec |  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

关于MySQL 查询生成多列的频率计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59392767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com