在Single语句中获取多个聚合

Har*_*n R 0 oracle plsql

该表包含城市及其分支/自动取款机的数据

CITY        TYPE       NAME
 ----------------------------------
 agra         atm         X
 agra         branch      X1 
 delhi        atm         X2
 agra         atm         X3
 agra         atm         X4
 delhi        branch      X5
 chennai      branch      X6
Run Code Online (Sandbox Code Playgroud)

期望的结果集是

CITY     ATM   BRANCH
------------------------------------
agra       3       1 
delhi      1       1
chennai    0       1
Run Code Online (Sandbox Code Playgroud)

我们是否可以在一个选择语句中执行此操作.

Gor*_*off 5

您可以像聚合中的条件求和一样执行此操作:

select t.city,
       sum(case when type = 'atm' then 1 else 0 end) as ATM,
       sum(case when type = 'branch' then 1 else 0 end) as branch
from t
group by t.city
Run Code Online (Sandbox Code Playgroud)