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

如何修改SQL语句统计所有存在重名的学生总数?

如何修改SQL以统计所有重名学生的总人数

你原来的SQL语句会按每个重复的名字单独输出对应学生数量,要得到所有存在重名的学生总人数,可以通过子查询求和或者窗口函数筛选统计两种方式实现:

方法一:子查询求和

先通过子查询筛选出所有重复名字的分组及对应人数,再在外层对这些人数求和:

SELECT SUM(name_count) AS total_duplicate_students
FROM (
    SELECT COUNT(id) AS name_count
    FROM student
    GROUP BY LOWER(first_name)
    HAVING COUNT(LOWER(first_name)) > 1
) AS duplicate_groups;

逻辑说明:

  • 内层子查询按小写的first_name分组,筛选出重复次数≥2的分组,得到每个重名对应的学生数
  • 外层查询将这些分组的人数相加,得到所有重名学生的总人数

方法二:窗口函数统计

给每个学生标记其名字的重复次数,再筛选出重复次数≥2的学生并统计总数:

SELECT COUNT(id) AS total_duplicate_students
FROM (
    SELECT id,
           COUNT(*) OVER (PARTITION BY LOWER(first_name)) AS name_count
    FROM student
) AS student_counts
WHERE name_count > 1;

逻辑说明:

  • 内层用窗口函数COUNT(*) OVER (PARTITION BY LOWER(first_name)),给每个学生计算其名字在表中的重复次数
  • 外层筛选出重复次数大于1的学生,统计这些学生的ID总数,就是所有重名学生的总人数

两种方法都能得到你需要的结果,可根据自己的SQL环境和习惯选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 18:01:16