首页 > 解决方案 > 如何显示同一区域和具有相同特征的排队人数

问题描述

我是 sql 新手,所以我请求帮助是否可以显示居住在具有相同特征的同一区域的人数。这是我的示例表。

区域

AreaID  Area_name
-----------------
001     India 
002     Boston
003     US

第二张表:

P_Id  | P_name |  car  | AreaID
------|--------|-------|-------
P01   | John   |  yes  | 001
P02   | Mary   |  null | 001
P03   | Chris  |  yes  | 003
P04   | Jane   |  null | 001
P05   | Ben    |  null | 002
...   
... 
P99   | May    |  null | 002
...

我想要一个查询来返回在表中注册的人数。

我希望的答案是显示在同一地区拥有汽车的人数。

AreaID | Havecar
-------|--------
001    |       2
002    |       7

或者显示最多的人拥有不同的汽车

AreaID  | numberOfPeople
--------|--------------
002     |         32

这两个可以使用 sql 查询吗?

标签: sqlcountleft-joinwhere-clause

解决方案


我希望的答案是显示同一地区有车的人数。

您可以使用聚合:

select areaid, count(*) havecar
from person
where car = 'yes'
group by areaid

如果您还想展示没有任何汽车的区域,那么您可以从桌子开始,area并带上personleft join

select a.areaid, coalesce(p.havecar, 0) havecar
from area
left join (
    select areaid, count(*) havecar
    from person
    where car = 'yes'
    group by areaid
) p on p.areaid = a.areaid

推荐阅读