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

SQL需求:按KeyCon分组获取CallsCount最大值对应的Address字段

解决方案

原数据表

KeyKeyConAdressCallsCount
1100Build915
2100Build010
3101Build724
4101Build417
5102Build310

期望输出

KeyConAdress
100Build9
101Build7
102Build3

方法1:使用窗口函数(推荐,适用于MySQL 8+、PostgreSQL、SQL Server等支持窗口函数的数据库)

用ROW_NUMBER()对每个KeyCon分组内的记录按CallsCount降序排序,取排序后行号为1的记录,就是每组CallsCount最大的那条:

SELECT KeyCon, Adress
FROM (
    SELECT 
        KeyCon, 
        Adress,
        ROW_NUMBER() OVER (PARTITION BY KeyCon ORDER BY CallsCount DESC) AS rn
    FROM your_table_name
) t
WHERE rn = 1;

如果同一KeyCon下有多个记录的CallsCount值相同且都是最大值,ROW_NUMBER()会随机返回一条;若要返回所有最大值记录,可替换为RANK()。


方法2:子查询关联

先分组查询得到每个KeyCon对应的最大CallsCount,再关联原表匹配对应Adress:

SELECT t1.KeyCon, t1.Adress
FROM your_table_name t1
JOIN (
    SELECT KeyCon, MAX(CallsCount) AS max_count
    FROM your_table_name
    GROUP BY KeyCon
) t2 ON t1.KeyCon = t2.KeyCon AND t1.CallsCount = t2.max_count;

注意:若同一KeyCon下有多个记录的CallsCount等于最大值,该查询会返回所有符合条件的行。


方法3:使用NOT EXISTS(兼容性好,适用于老版本数据库)

通过NOT EXISTS筛选出:不存在同KeyCon下CallsCount更大的记录,这类记录即为每组的最大值记录:

SELECT KeyCon, Adress
FROM your_table_name t1
WHERE NOT EXISTS (
    SELECT 1
    FROM your_table_name t2
    WHERE t2.KeyCon = t1.KeyCon AND t2.CallsCount > t1.CallsCount
);

与方法2一致,若同一组存在多个最大值记录,会返回所有符合条件的行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 10:07:15