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

Oracle中按特定条件统计数据:如何按姓名首字符统计人员数量

解决Oracle中按姓名首字符统计人数的问题

嘿,你的需求是按姓名首字母分组统计人数对吧?先看看你写的查询语句,这里有两个小问题:一是substr(name)没有指定截取长度,Oracle里substr如果只传第一个参数,会返回整个字符串;二是你的where子句逻辑不对,咱们要的是分组统计,不是过滤行。

我给你写个正确的查询语句,完全能满足你的需求:

SELECT 
    SUBSTR(name, 1, 1) AS FIRST_CHAR,
    COUNT(id) AS NUMBER_OF_PERSONS
FROM 
    Person
GROUP BY 
    SUBSTR(name, 1, 1)
ORDER BY 
    FIRST_CHAR;

语句解释:

  • SUBSTR(name, 1, 1):从姓名的第1个字符开始截取1个长度,精准拿到首字符;
  • COUNT(id):统计每个分组里的人员数量(用COUNT(*)也可以,效果一致);
  • GROUP BY SUBSTR(name, 1, 1):按照首字符进行分组,这是实现分组统计的核心;
  • ORDER BY FIRST_CHAR:让结果按首字母顺序排列,看起来更整洁直观。

补充优化:

如果你的姓名存在大小写混合的情况(比如既有Michael又有mike),可以用UPPER或者LOWER统一转换,避免大小写被当成不同分组:

SELECT 
    UPPER(SUBSTR(name, 1, 1)) AS FIRST_CHAR,
    COUNT(id) AS NUMBER_OF_PERSONS
FROM 
    Person
GROUP BY 
    UPPER(SUBSTR(name, 1, 1))
ORDER BY 
    FIRST_CHAR;

测试数据执行结果:

用你提供的Person表数据,第一个查询会返回:

FIRST_CHARNUMBER_OF_PERSONS
E3
G1
M2

和你预期的结果完全对应,多显示的首字符列还能让你清晰知道每个数字对应的是哪个首字母~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 06:58:13