如何对多个条件使用COUNT?

问题描述 投票:0回答:1

我有一个数据表

city
,如下所示:

城市 人口 面积
A 2500000 800
B 990000 400
C 1200000 600

我需要计算以下每个条件的城市数量:

  • 小:人口< 1000000 and area < 500
  • 中:1000000 < Population < 2000000 and 500 < area < 700
  • 大:人口>200万,面积>700

预期产出:

1 1 1

我只能想到这样使用CASE

SELECT
    CASE WHEN population < 1000000 AND area < 500 THEN COUNT(*)
         WHEN population > 2000000 AND area > 700 THEN COUNT(*)
    ELSE COUNT(*) END AS 'big'
FROM city;

但它只返回 1 个值。

请帮我解决。

谢谢你。

sql mysql
1个回答
0
投票

你会想要这样的东西:

选择 count(IIF(人口 < 1000000 AND area < 500, 1, NULL)) as small, count(IIF((population between 1000000 AND 2000000) AND (area between 500 AND 700), 1, NULL)) as medium, count(IIF(population > 2000000 AND 面积 > 700, 1, NULL)) 一样大 来自城市;

您无法使用 WHERE 子句进行聚合,因为每列需要不同的条件。相反,您可以使用 COUNT 仅包含非空值这一事实。

只需使用 IIF 函数检查每个条件,如果为真则返回 1,否则返回 NULL。然后,计数聚合会正确地仅对与查询匹配的行进行计数。

© www.soinside.com 2019 - 2024. All rights reserved.