如何获取维修量最多与最少的技术员及其nombre、especialidad字段信息?
获取维修量最多/最少技术员的信息
假设你的技术员表名为 tecnicos,维修记录表名为 reparaciones,关联字段为 id_tecnico,可以用以下SQL语句实现需求:
-- 先统计每个技术员的维修量,再筛选出维修量最大和最小的记录 WITH tecnico_reparaciones AS ( SELECT t.id_tecnico, t.nombre, t.especialidad, COUNT(r.id_reparacion) AS cantidad_reparaciones FROM tecnicos t LEFT JOIN reparaciones r ON t.id_tecnico = r.id_tecnico GROUP BY t.id_tecnico, t.nombre, t.especialidad ) SELECT nombre, especialidad, cantidad_reparaciones FROM tecnico_reparaciones WHERE cantidad_reparaciones IN ( SELECT MAX(cantidad_reparaciones) FROM tecnico_reparaciones UNION SELECT MIN(cantidad_reparaciones) FROM tecnico_reparaciones );
逻辑说明:
- 用CTE
tecnico_reparaciones统计每个技术员的维修总数,同时保留nombre(姓名)和especialidad(专长)字段。 - 外层查询通过子查询获取维修量的最大值和最小值,筛选出对应技术员的信息。
- 如果有多个技术员维修量并列最大/最小,所有符合条件的记录都会被返回。
如果你的表名或字段名和假设不同,只需替换对应的名称即可。
内容的提问来源于stack exchange,提问作者imnachox2
相关产品推荐
相关产品推荐

