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

如何修正SQL脚本以获取用户数量最多的分组?

修正方案

你的原脚本问题在于CTE里的RANK()函数分区逻辑错误——按gr_type分区后排序,本质是在每个分组内部对users做排序,无法帮你找出整体用户数最多的分组。正确思路是先统计每个分组的用户总数,再从中筛选出数量最大的分组。

以下是几种可行的修正方法:

方法一:窗口函数筛选排名第一的分组

WITH cte AS (
    SELECT
        gr_type,
        COUNT(users) AS user_count, -- 先统计每个分组的用户总数
        RANK() OVER (ORDER BY COUNT(users) DESC) AS rnk
    FROM table1
    GROUP BY gr_type
)
SELECT gr_type, user_count AS max_users
FROM cte
WHERE rnk = 1;

如果存在多个分组用户数并列最多,RANK()会返回所有并列分组;若只想返回其中一个,将RANK()替换为ROW_NUMBER()即可。

方法二:用TOP 1直接取最大分组

SELECT TOP 1
    gr_type,
    COUNT(users) AS max_users
FROM table1
GROUP BY gr_type
ORDER BY COUNT(users) DESC;

该方法更简洁,适合仅需单个最大分组的场景(若有并列,仅返回其中一个,具体取决于数据库排序规则)。

方法三:子查询匹配最大用户数

SELECT
    gr_type,
    COUNT(users) AS max_users
FROM table1
GROUP BY gr_type
HAVING COUNT(users) = (
    SELECT MAX(user_count)
    FROM (
        SELECT COUNT(users) AS user_count
        FROM table1
        GROUP BY gr_type
    ) AS sub
);

此方法会返回所有用户数等于最大值的分组,适配存在并列的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 14:17:12