背景:练习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
- 对医生数量进行倒序排序
最后附上结果图:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。