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

Oracle SQL姓名标准化与去重:去除大写、末尾s合并重复项

解决方案

要实现转小写、移除末尾字母s、去重并正确统计的需求,调整后的Oracle SQL语句如下:

SELECT 
    REGEXP_REPLACE(LOWER(REGEXP_SUBSTR(NAME, '(\S+)$')), 's$', '') AS NAMEZ,
    COUNT(CASE WHEN daysout IS NULL THEN 1 END) AS home,
    COUNT(CASE WHEN daysout IS NOT NULL THEN 1 END) AS away,
    COUNT(*) AS daystotal
FROM peoplein
GROUP BY REGEXP_REPLACE(LOWER(REGEXP_SUBSTR(NAME, '(\S+)$')), 's$', '')

关键调整细节:

  • 转小写处理:用LOWER()替换原语句的UPPER(),直接得到小写格式的姓名
  • 移除末尾s:通过REGEXP_REPLACE(字段, 's$', '')精准匹配姓名末尾的单个s并移除;如果姓名末尾没有s,则保持原内容不变
  • 正确分组去重+统计:用GROUP BY替代DISTINCT——因为你需要基于处理后的姓名分组计算各类计数,DISTINCT仅能对整行去重,无法配合聚合函数实现正确的分组统计逻辑

处理流程验证:

原始数据:

Johns
JOHNS
John
Jack
JACK
  1. 提取最后部分并转小写:johns、johns、john、jack、jack
  2. 移除末尾s:所有johns转为john,jack保持不变
  3. 分组统计后得到唯一的john和jack,同时输出对应分组的home/away/daystotal计数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 15:55:35