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

SQL查询优化:计算需删除的重复姓氏数据集数量

问题:计算需删除的重复姓氏记录数

要实现「姓氏(last_name)必须唯一」的约束,需统计需要删除的数据集数量。示例场景:数据包含3条Betty、1条Tommy、1条Bob,需删除2条Betty,最终结果应为2。

原查询语句虽能得到正确结果,但因last_name使用次数过多被检查器提示,需更简洁优雅的方案:

SELECT (COUNT(last_name) - COUNT(DISTINCT last_name)) AS to_delete
FROM employees;

优化方案

通过分组统计后求和的方式,仅在分组阶段使用一次last_name,避免重复引用:

SELECT SUM(name_count - 1) AS to_delete
FROM (
    SELECT COUNT(*) AS name_count
    FROM employees
    GROUP BY last_name
) AS grouped_names;

逻辑说明

  1. 内层子查询按last_name分组,统计每个姓氏的出现次数
  2. 外层查询对每个姓氏的「出现次数-1」求和(每个姓氏仅保留1条,剩余的都需删除)
  3. 最终结果即为满足姓氏唯一约束需删除的总记录数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 17:52:00