Нельзя ссылаться на псевдоним, определенный в предложении SELECT
в том же предложении (например, ни в предложении WHERE
). Вам нужно либо повторить исходное выражение, либо использовать производную таблицу (подзапрос или cte).
Здесь выражение достаточно простое, поэтому повторение кажется более актуальным:
SELECT
t.Name,
t.UnitPrice,
COUNT(*) AS Purchase_count,
COUNT(*) * t.UnitPrice AS Total_per_track
FROM Track t
INNER JOIN InvoiceLine il ON t.TrackId = il.TrackId
GROUP BY t.TrackId, t.Name, t.UnitPrice
ORDER BY Total_per_track desc
LIMIT 10;
Примечания:
Я добавил TrackId
и UnitPrice
к пункту GROUP BY
; TrackId
есть, чтобы избежать неправильной группировки двух дорожек, которые имели бы одинаковые Name
; UnitPrice
появляется в предложении SELECT
и не является частью агрегатной функции, поэтому рекомендуется использовать его и в предложении GROUP BY
(хотя, похоже, она функционально зависит от TrackId
)
псевдонимы таблиц делают запрос короче для чтения и записи