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

SQL查询:如何根据一列的最大值选取另一列的对应值

SQL实现方案

直接按统计得到的tin_值倒序排序后取第一条,即可拿到tin_取最大值时对应的tin_max,代码如下:

SELECT n.tin_max
FROM (
    SELECT DISTINCT tin AS tin_max, nome_cat
    FROM responsavel_por 
    GROUP BY tin, nome_cat
) AS n 
GROUP BY tin_max 
ORDER BY COUNT(n.tin_max) DESC
LIMIT 1;

注意事项

  • 原SQL子查询中的ORDER BY tin是冗余逻辑,子查询内的排序会在外层分组聚合时失效,删除后不影响结果,还能减少不必要的排序开销;原句中子查询层对responsavel_por.tin的计数不影响外层统计结果,已在优化版本中移除。
  • 若你使用的数据库不支持LIMIT语法(如SQL Server需用TOP 1、Oracle 11g及更早版本需用ROWNUM取数),只需替换末尾取首行的语法即可,核心排序逻辑无需调整。
  • 如果存在多个tin_max对应相同最大tin_值、需要返回全部符合条件结果的场景,可以用窗口函数实现:
WITH tin_stat AS (
    SELECT tin_max, COUNT(*) AS tin_
    FROM (
        SELECT DISTINCT tin AS tin_max, nome_cat
        FROM responsavel_por
        GROUP BY tin, nome_cat
    ) t
    GROUP BY tin_max
)
SELECT tin_max
FROM (
    SELECT 
        tin_max,
        RANK() OVER(ORDER BY tin_ DESC) AS rk
    FROM tin_stat
) res
WHERE rk = 1;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 13:51:27