在 SQL 中从 Count() 选择最大值时出错

Getting error while Selecting MAX value from Count() in SQL

我在 SQL 服务器中应用 MAXCOUNT 时遇到错误,即使我的代码是正确的。请在我出错的地方帮助我

显示Sales.Invoicestable

中打包物品数量最多的人id
select 
    PackedByPersonID, count(PackedByPersonID) 
from 
    Sales.Invoices 
group by 
    PackedByPersonID 
having 
    count(PackedByPersonID) = (select max(max_count) 
                               from 
                                   (select PackedByPersonID, count(PackedByPersonID) max_count 
                                    from Sales.Invoices 
                                    group by PackedByPersonID))

虽然执行 SQL 无法识别代码中的 max_count.. 因为它带有红色下划线并且显示“无效的列名称 'max_count'”

错误:

Msg 102, Level 15, State 1, Line 8
Incorrect syntax near ')'

我建议为此使用 window 函数或 TOP。但是您的语法错误是因为 FROM 子句中的所有子查询都需要 SQL Server 中的别名。所以:

select PackedByPersonID, count(PackedByPersonID)
from Sales.Invoices 
group by PackedByPersonID 
having count(PackedByPersonID) = (
           select MAX(max_count)
           from (select PackedByPersonID, count(PackedByPersonID) max_count
                 from Sales.Invoices 
                 group by PackedByPersonID
                ) i
------------------^ the table alias
          )

编写查询的更简单、更有效的方法是:

select top (1) with ties PackedByPersonID, count(*)
from Sales.Invoices 
group by PackedByPersonID 
order by count(*) desc;