前两天写一个【求各类别下出现次数最多的前两个品牌】的SQL,一直报2附近有语法错误。
今天将此记录一下
我写的
SELECT *
FROM (
SELECT *,
row_number() over(partition by a.categoryname ORDER BY a.brandcount DESC) as ranking
FROM
(SELECT categoryname,brandname,count(brandname)as brandcount
FROM vw_sku_basic_info GROUP BY categoryname,brandname))
as a WHERE ranking <= 2
报错信息
SELECT *
FROM (
SELECT *,
row_number() over(partition by a.categoryname ORDER BY a.brandcount DESC) as ranking
FROM (SELECT categoryname,brandname,count(brandname)as brandcount FROM vw_sku_basic_info GROUP BY categoryname,brandname))as a WHERE ranking <= 2
> [42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]')' 附近有语法错误。 (102)
正确的
SELECT *
FROM (
SELECT *,
row_number() over(partition by a.categoryname ORDER BY a.brandcount DESC) as ranking

本文记录了一次在SQL中求解‘各类别下出现次数最多的前两个品牌’时遇到的语法错误。错误原因在于括号组合不当,正确解决方案是使用窗口函数row_number()配合嵌套查询。通过修正后的SQL模板,可以解决经典TopN问题,即每组最大的N条记录。
最低0.47元/天 解锁文章
4218

被折叠的 条评论
为什么被折叠?



