[Homework] Бази данни - 5. Advanced-SQL -Problem 27
Здравейте, колеги,
Реших задачата по следния начин:
SELECT TOP(1) t.Name, COUNT(*) AS [Number of Employees] FROM Towns t
JOIN Addresses a ON t.TownID = a.TownID
JOIN Employees e ON a.AddressID = e.AddressID
GROUP BY t.Name
ORDER BY [Number of Employees] DESC
Но подобно решение е дървено. В подобна ситуация ако имаме 10 милиона реда, да ги нареждаме не е добра практика. Търся начин да реша задачата с MAX, вместо с ORDER BY. Опитах нещо от типа на
WITH summary AS (
SELECT t.Name, COUNT(*) AS [Number of Employees] FROM Towns t
JOIN Addresses a ON t.TownID = a.TownID
JOIN Employees e ON a.AddressID = e.AddressID
GROUP BY t.Name
)
SELECT Name, MAX([Number of Employees])
FROM summary
но ми дава следната грешка: Column 'summary.Name' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Опитах и други варианти, но нещо не правя както трябва в групирането. Някой може ли да помогне? Благодаря предварително
Стана, мерси!