如何在postgresql中查询一对一关系的计数?

如何在postgresql中查询一对一关系的计数?,sql,postgresql,Sql,Postgresql,我有一个由面向对象创建的postgresql数据库表设计 Accunt (id, CreateDate) PersonalAccount (AccountId, FirstName, LastName, Phone) CorporateAccount (AccountId, CorporationName, NationalTaxNumber) PersonalAccount和CorporateAccount具有与Account表相关的AccountId列 如何在postgresql中创建一对

我有一个由面向对象创建的postgresql数据库表设计

Accunt (id, CreateDate)
PersonalAccount (AccountId, FirstName, LastName, Phone)
CorporateAccount (AccountId, CorporationName, NationalTaxNumber)
PersonalAccount
CorporateAccount
具有与
Account
表相关的
AccountId

如何在postgresql中创建一对一关系

我在Account表中有3条记录。2个is
个人账户
和1个is
公司账户

如何按个人帐户和公司帐户选择计数组

AccountType        Count
------------------------
PersonalAccount      2
CorporateAccount     1
Total                3

一种方法是
联合所有
分组集

select coalesce(accounttype, 'Total'), count(*)
from ((select 'Personal' as accounttype
       from PersonalAccount
      ) union all
      (select 'Corporate'
       from CorporateAccount
      )
     ) pc
group by grouping sets ( (accounttype), () );

一种方法是
联合所有
分组集

select coalesce(accounttype, 'Total'), count(*)
from ((select 'Personal' as accounttype
       from PersonalAccount
      ) union all
      (select 'Corporate'
       from CorporateAccount
      )
     ) pc
group by grouping sets ( (accounttype), () );