То, что я пытаюсь сделать, это получить название города с наибольшим количеством заказов. Кажется довольно простым, но когда я запускаю этот код (мне приходилось использовать CTE), я получаю только количество заказов, никакого имени города.SQL Select with CTE
WITH CityOrder AS
(
SELECT City
FROM Person.Address JOIN Sales.SalesOrderHeader
ON ShipToAddressID = AddressID
),
CitiesOrders AS
(
SELECT City, COUNT(City) AS "NoOfOrders"
FROM CityOrder
GROUP BY City
)
SELECT MAX("NoOfOrders") FROM CitiesOrders;
Я попытался изменить последнюю строку
SELECT City, MAX("NoOfOrders") FROM CitiesOrders;
Но тогда, это показывает все города с их заказами. Я почти уверен, что не вижу простой ошибки. Любой совет?
Это показывает, что вы также выбрали город. Вы говорите, что хотите, чтобы все города и их Макс. Вам необходимо заказать COUNT в вашем CitiesOrders и выбрать TOP 1, тогда вам не нужен третий запрос. Хотя все это можно было бы обрабатывать и в одном запросе. –
Да, я знаю, что последнее неверно, я просто показывал, что я имел в виду, не написал весь код с помощью GROUP BY. Ожидаемый результат - получить ОДИН город, который имеет большинство заказов. – Jake
Каков ожидаемый результат, если два города имеют одинаковое максимальное значение? – jarlh