背景:练习 sql. 机构表和医生表. 汇总每个机构上面的医生总数. 去除机构下为 0 的医生行, 倒序展现.
sql 语句
select DISTINCT b.InstitutionID,InstitutionName,COUNT(ClientID) ClientSum
from b_Institution b
left join b_Client c on c.InstitutionID = b.InstitutionID
group by b.InstitutionID , InstitutionName
having COUNT(ClientID) != 0
order by ClientSum desc
记录一下每一句 sql 的意思:
(1): select DISTINCT b.InstitutionID,InstitutionName,COUNT(ClientID) ClientSum
- 查问进去的后果列为三列.
- 第一列为去重后的 InstitutionID
- 第二列为 InstitutionName
- 第三列为客户总数列名为 ClientSum
(2):from b_Institution b
- 查问主表为机构表 并取别名为 b
(3):left join b_Client c on c.InstitutionID = b.InstitutionID
- 左联医生表 (取别名为 c) 外面的机构 ID 和机构表的机构 ID 相等的数据
(4):group by b.InstitutionID , InstitutionName
- 对机构表的 ID 和 Name 进行分组(分组后就能够计算医生数量)
(5):having COUNT(ClientID) != 0
- 去除医生数量为 0 的数据
(6):order by ClientSum desc
- 对医生数量进行倒序排序
最初附上后果图: