Я борюсь с SQL-запросом, который, как я думал, должен быть довольно прост.SQL - выберите уникальную строку со средним значением всех других строк
Представьте таблицу Users
, которая использует UserID
как PK и столбец Age
для возраста пользователей:
UserID Age
1 22
2 34
3 23
4 19
etc.
Я хотел бы иметь возможность указать UserID и вернуть возраст этого пользователя, а также средний возраст всех других пользователей. Например, если я указываю UserID 1, то я хотел бы видеть возвращение установить в качестве:
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 с решением, то мне было бы интересно чтобы увидеть это.
Благодаря
Я предполагаю, что '* 1.0' означает, что' AVG' производит float, а не целое число? –
@ Remnant - Да. В противном случае вы получили бы '25', считая, что' Age' is и 'int'. –
@Remnant - На самом деле это не 'float', а' numeric (38,6) 'в этом случае. –