背景:练习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

  • 对医生数量进行倒序排序

最后附上结果图:
image.png


Timor
37 声望20 粉丝