gpt4 book ai didi

mysql - 基于 WHERE 的多个聚合查询

转载 作者:太空宇宙 更新时间:2023-11-03 10:57:34 24 4
gpt4 key购买 nike

这可能是一件非常简单的事情......但是现在我想不出如何在一条语句中做到这一点。

我知道我可以选择 count(id) WHERE status = APP,然后重复所有计数。但我想在一个查询中完成它。我会按城市分组,然后按状态和总和分组吗?

表格如下....

City  |  Status  |  
City 1 APP
City 1 NH
City 1 APP
City 1 NEW
City 2 NEW
City 2 APP
City 2 APP
City 2 NH

我想返回以下数组。

 {[cityname]=>City1,[Total]=>4,[APP]=>1,[NH]=>1,[NEW]=>2}, 
{[cityname]=>City2,[Total]=>4,[APP]=>2,[NH]=>1,[NEW]=>1}

我当前的查询是...

 SELECT COUNT(id) as total, city WHERE status = 'APP' GROUP BY city
SELECT COUNT(id) as total, city WHERE status = 'NH' GROUP BY city
SELECT COUNT(id) as total, city WHERE status = 'NEW' GROUP BY city

我知道这非常简单,但已经有一段时间了,我忘记了如何将这些组合成一个语句。

最佳答案

如果您希望每个城市的行以 APPNHNEW 为列,您可以使用条件 SUM()像这样

SELECT city,
COUNT(*) total,
SUM(CASE WHEN status = 'APP' THEN 1 ELSE 0 END) app,
SUM(CASE WHEN status = 'NH' THEN 1 ELSE 0 END) nh,
SUM(CASE WHEN status = 'NEW' THEN 1 ELSE 0 END) new
FROM table1
GROUP BY city

输出:

|   CITY | TOTAL | APP | NH | NEW ||--------|-------|-----|----|-----|| City 1 |     4 |   2 |  1 |   1 || City 2 |     4 |   2 |  1 |   1 |

这是 SQLFiddle 演示

关于mysql - 基于 WHERE 的多个聚合查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18940823/

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