You need to enable JavaScript to run this app. SQL查询含最多项目的分组时substr函数报错问题排查
优惠活动
大模型
产品
解决方案
定价
更多

SQL查询含最多项目的分组时substr函数报错问题排查

问题排查与解决方案

报错原因

  • 你使用的SQL Fiddle对应环境为SQL Server,SQL Server未内置SUBSTR()函数,该函数是MySQL、Oracle等数据库的语法,SQL Server中对应子串截取函数为SUBSTRING(),这是你收到报错的直接原因。
  • 除此之外你的SQL查询逻辑完全不符合需求:你当前的语法试图对groupid字符串做截取运算,但你的需求是统计每个分组包含的项目数量,再筛选出数量最多的分组,二者逻辑完全不匹配。

正确查询写法

仅取最多的1个分组(不处理并列)

直接按groupid分组统计项目数,倒序排序后取第一条即可:

SELECT TOP 1 groupid, COUNT(itemid) AS item_count
FROM itemgroup
GROUP BY groupid
ORDER BY item_count DESC

结合你提供的测试数据,执行后返回结果为Group1,对应项目数量为4,符合预期。

兼容并列最多的情况

如果存在多个分组项目数相同且均为最大值的情况,使用窗口函数RANK()实现:

WITH group_stat AS (
    SELECT 
        groupid, 
        COUNT(itemid) AS item_count,
        RANK() OVER(ORDER BY COUNT(itemid) DESC) AS rank_num
    FROM itemgroup
    GROUP BY groupid
)
SELECT groupid, item_count
FROM group_stat
WHERE rank_num = 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 06:15:00