那是正确的; 嵌套聚合函数没有意义(尽管在窗口函数中嵌套聚合函数确实有意义).一种简单的方法使用窗口函数,这在大多数数据库中都可用:
SELECT op.* FROM (SELECT o.operatoriausPavadinimas, count(p.operatoriausID) as ct, RANK() OVER (ORDER BY count(p.operatoriausID) DESC) as seqnum FROM Operatorius o JOIN Planas p ON o.operatoriausID = p.operatoriausID GROUP BY o.operatoriausPavadinimas ) op WHERE seqnum = 1;
笔记:
作为缩写的表别名优于t1
和t2
(或a
和b
)等随机名称.
学习使用显式JOIN
语法.简单规则: 不要在FROM
子句中使用逗号.
编辑:
好的,在SQL Server中,最简单的是TOP WITH TIES
:
SELECT TOP (1) WITH TIES o.operatoriausPavadinimas, count(p.operatoriausID) as ct FROM Operatorius o JOIN Planas p ON o.operatoriausID = p.operatoriausID GROUP BY o.operatoriausPavadinimas ORDER BY COUNT(p.operatoriausID) DESC