MySQL查询问题:入门数据库作业如何统计维修量最多的区域
MySQL查询维修量最高区域方法
核心逻辑
统计每个区域的维修记录总数,倒序排序后取首位即可。如果存在多区域并列最高的情况,可以用窗口函数抓取所有符合条件的结果。
单表查询(维修表直接存储区域名称)
如果你的维修记录表中直接存储了区域字段(比如字段名为area/region),直接使用下面的语句,替换对应表名、字段名即可运行:
SELECT area, COUNT(*) AS repair_total FROM 你的维修表名 GROUP BY area ORDER BY repair_total DESC LIMIT 1;
联表查询(区域信息单独存储在区域表)
如果区域信息单独存在areas表,和维修表通过area_id关联,使用联表查询保证区域信息的准确性:
SELECT a.area_name, COUNT(r.id) AS repair_total FROM areas a INNER JOIN repairs r ON a.area_id = r.area_id GROUP BY a.area_id, a.area_name ORDER BY repair_total DESC LIMIT 1;
并列最高场景适配
如果需要抓取所有维修量并列最高的区域,使用RANK()窗口函数实现:
WITH area_stat AS ( SELECT area, COUNT(*) AS repair_total, RANK() OVER(ORDER BY COUNT(*) DESC) AS ranking FROM 你的维修表名 GROUP BY area ) SELECT area, repair_total FROM area_stat WHERE ranking = 1;
你可以参考下图的表结构调整字段、表名适配你的实际库表:
内容的提问来源于stack exchange,提问作者undercover_reptilian
相关产品推荐
相关产品推荐

