gpt4 book ai didi

mysql - 在 1 行和不同的列中显示结果

转载 作者:行者123 更新时间:2023-11-29 03:49:18 24 4
gpt4 key购买 nike

假设一个简单的案例,例如一个表 bug,其中有一列 status,可以是openfixed 等。
如果我想知道有多少错误是开放的,我只需这样做:

从 status = 'open' 的错误中选择 count(*) 作为 open_bugs;

如果我想知道有多少错误,我只需这样做:

从 status = 'closed' 的错误中选择 count(*) 作为 closed_bugs;

如果想知道有多少个打开的和多少个关闭的查询返回 2 列中的结果,即

Open | Closed|  
60 180

最好的方法是什么? UNION 连接结果,所以这不是我想要的

最佳答案

这可以通过在聚合函数中使用 CASE 表达式来完成。这会将行转换为列:

select
sum(case when status = 'open' then 1 else 0 end) open_bugs,
sum(case when status = 'closed' then 1 else 0 end) closed_bugs
from bugs

这也可以使用您的原始查询来编写:

select 
max(case when status = 'open' then total end) open_bugs,
max(case when status = 'closed' then total end) closed_bugs
from
(
select status, count(*) as total from bugs where status = 'open' group by status
union all
select status, count(*) as total from bugs where status = 'closed' group by status
) d

关于mysql - 在 1 行和不同的列中显示结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17200541/

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