Я борюсь с SQL-запросом, который изначально мне показался достаточно простым.
Представьте себе таблицу Users
, которая использует UserID
в качестве PK и столбец Age
для возраста пользователей:
UserID Age
1 22
2 34
3 23
4 19
etc.
Я бы хотел иметь возможность указать идентификатор пользователя и вернуть возраст этого пользователя, а также средний возраст всех остальных пользователей. Например, если я укажу UserID 1, я бы хотел, чтобы return был установлен как:
UserID Age AvgAge
1 22 24.5
Следующее не работает: (поскольку WHERE
выполняется до GROUP BY
)
Select UserID, Age, Avg(Age) as 'AvgAge'
From Users
Where UserID = 1
Group By UserId, Age
UserID Age AvgAge //Result set
1 22 22
Кто-нибудь может подтолкнуть меня в правильном направлении?
Кстати, в идеальном мире средний возраст должен не включать пользователя, который был указан, поскольку идея состоит в том, чтобы показать свой возраст относительно среднего возраста всех остальных.
Учитывая, что существует более 1000 пользователей, тогда усреднение по всем пользователям не будет иметь практического значения для числа AvgAge
, хотя, если кто-то захочет похвастаться своим мастерством SQL с помощью этого решения, то я буду интересно это увидеть.
Спасибо