Мне нужно найти наиболее распространенного клиента Имя всех клиентов, чей домашний адрес находится в Австралии, используя базу данных AdventureWorks
(https://technet.microsoft.com/en-us/library/ms124438(v=sql.100).aspx).Получение максимального значения из запроса
Код, который у меня ниже, дает мне ответ, который мне нужен («Lacey» используется 25 раз), но это приводит к 561 строке. Как я могу ограничить это до 1 строки без с использованием TOP x
или SET ROWCOUNT
для управления результатами?
SELECT
FirstName,
COUNT(PP.FirstName) AS FirstNameCount
FROM
Person.Person AS PP
INNER JOIN Sales.Customer AS SC
ON SC.PersonID = PP.BusinessEntityID
INNER JOIN Person.BusinessEntity AS PBE
ON PBE.BusinessEntityID = PP.BusinessEntityID
INNER JOIN Person.BusinessEntityAddress AS PBEA
ON PBEA.BusinessEntityID = PBE.BusinessEntityID
INNER JOIN Person.AddressType AS PAT
ON PAT.AddressTypeID = PBEA.AddressTypeID
INNER JOIN Person.Address AS PA
ON PA.AddressID = PBEA.AddressID
WHERE
PAT.AddressTypeID = 2 AND
StateProvinceID = 50 OR
StateProvinceID = 64 OR
StateProvinceID = 66 OR
StateProvinceID = 71 OR
StateProvinceID = 77
GROUP BY
FirstName
ORDER BY
FirstNameCount DESC
Просто любопытно - почему вы не можете использовать 'TOP'? Это именно то, что предназначено для «TOP» - ограничить результат на X количество строк. – dotnetom
Поскольку вопросник не позволяет мне – BobSacamano
Вы смешиваете анны и орлы, см. [Приоритет оператора] (https://msdn.microsoft.com/en-us/library/ms190276.aspx). Либо используйте 'in', чтобы перечислить StateProvinceIDs или поместите в него круглые скобки. –