You need to enable JavaScript to run this app. 如何在Excel或SQL中实现按Letter排序同时相同姓名行聚合
优惠活动
大模型
产品
解决方案
定价
更多

如何在Excel或SQL中实现按Letter排序同时相同姓名行聚合

解决方案

Excel 操作步骤

  1. 新增辅助列,列名可设为排序基准值,使用公式获取当前姓名首次出现时对应的Letter:
    • 支持XLOOKUP的高版本Excel:=XLOOKUP(A2,A:A,B:B,,0)
    • 低版本Excel:=INDEX(B:B,MATCH(A2,A:A,0))
  2. 选中全部数据区域,设置自定义排序规则:
    • 第一优先级:排序基准值,升序
    • 第二优先级:Name,升序(确保首现Letter相同的姓名按原有先后顺序排列)
    • 第三优先级:Letter,升序(确保同一姓名的行按Letter顺序排列)
      执行排序后即可得到预期结果。

SQL 实现代码

支持窗口函数的数据库(MySQL8.0+/PostgreSQL/SQL Server等)

核心逻辑是先通过窗口函数计算每个姓名的首现排序基准,再按规则排序:

WITH sort_base AS (
    SELECT
        Name,
        Letter,
        -- 取每个姓名对应的最小Letter作为排序基准,如需严格匹配原表首次出现顺序可替换为 MIN(自增ID) OVER (PARTITION BY Name)
        MIN(Letter) OVER (PARTITION BY Name) AS first_letter
    FROM 你的表名
)
SELECT Name, Letter
FROM sort_base
ORDER BY first_letter ASC, Name ASC, Letter ASC;

不支持窗口函数的低版本数据库

用子查询关联获取排序基准:

SELECT t.Name, t.Letter
FROM 你的表名 t
JOIN (
    SELECT Name, MIN(Letter) AS first_letter
    FROM 你的表名
    GROUP BY Name
) t2 ON t.Name = t2.Name
ORDER BY t2.first_letter ASC, t.Name ASC, t.Letter ASC;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 19:45:03