You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过SQL嵌套查询对多行结果集进行分组?

嘿,我看你手里有两个SQL查询语句,想要对结果集做分组处理对吧?先把你现有的代码整理成清晰的格式,方便咱们调整:

第一条查询语句

SELECT Patient.ID, Patient.Name, AnimalType.Value as AnimalType, Patient.Age, Customer.Firstname, Customer.Lastname 
FROM Patient 
INNER JOIN Customer ON Patient.Owner_FK = Customer.ID 
INNER JOIN AnimalType ON Patient.Type_FK = AnimalType.ID

第二条查询语句(你没写完,我先保留现有内容)

SELECT Treatment.Treatment_Date, TreatmentType.Type 
FROM Treatment 
INNER JOIN TreatmentItem ON Treat...

接下来给你几个分组处理的示例,你可以根据实际需求调整:

示例1:按动物类型分组统计患者信息

如果想统计每种动物类型下有多少患者,以及对应的主人名单,可以这么写:

SELECT 
  AnimalType.Value as AnimalType,
  COUNT(Patient.ID) as TotalPatients,
  GROUP_CONCAT(DISTINCT CONCAT(Customer.Firstname, ' ', Customer.Lastname)) as OwnerNames
FROM Patient 
INNER JOIN Customer ON Patient.Owner_FK = Customer.ID 
INNER JOIN AnimalType ON Patient.Type_FK = AnimalType.ID
GROUP BY AnimalType.Value;

这里GROUP BY AnimalType.Value指定按动物类型分组,COUNT用来统计患者数量,GROUP_CONCAT把每个类型对应的主人名字拼在一起(如果是SQL Server的话,换成STRING_AGG就行)。

示例2:按治疗日期+类型分组统计治疗项目

假设你的第二条语句是关联治疗项目和治疗类型,想统计每天每种治疗类型的项目数,可以补全后这么写:

SELECT 
  Treatment.Treatment_Date,
  TreatmentType.Type,
  COUNT(TreatmentItem.ID) as TotalTreatmentItems
FROM Treatment 
INNER JOIN TreatmentItem ON Treatment.ID = TreatmentItem.Treatment_FK
INNER JOIN TreatmentType ON TreatmentItem.Type_FK = TreatmentType.ID
GROUP BY Treatment.Treatment_Date, TreatmentType.Type;

这里用两个字段联合分组,能看到每天每种治疗的具体数量。

最后提醒下:分组的时候要注意,SELECT里的字段要么出现在GROUP BY里,要么是用聚合函数(比如COUNT、SUM、AVG)计算的结果,不然大多数数据库会报错哦。

内容的提问来源于stack exchange,提问作者andrelange91

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 02:28:33