
Untitled
By: a guest on
Apr 28th, 2012 | syntax:
None | size: 1.66 KB | hits: 14 | expires: Never
SQL - Select unique row with average of all other rows
UserID Age
1 22
2 34
3 23
4 19
etc.
UserID Age AvgAge
1 22 24.5
Select UserID, Age, Avg(Age) as 'AvgAge'
From Users
Where UserID = 1
Group By UserId, Age
UserID Age AvgAge //Result set
1 22 22
declare @T table
(
UserID int,
Age int
)
insert into @T values
(1, 22),
(2, 34),
(3, 23),
(4, 19)
declare @UserID int = 1
select Age, (select avg(Age*1.0)
from @T
where UserID <> @UserID) as AvgAge
from @T
where UserID = @UserID
Age AvgAge
----------- ---------------------------------------
22 25.333333
SELECT u.UserID,
u.Age,
(SELECT AVG(uavg.Age)
FROM Users uavg
WHERE uavg.UserID != u.UserID) AS AvgAge
FROM Users u
WHERE u.UserID = 1
Select
UserID,
Age,
(select Max(Age) from Users) as 'AvgAge'
From Users
Where UserID = 1
Select U.UserID, u.Age, sq.Age as 'AvgAge'
From Users u
join (select average(age) as Age from users) sq on 1=1
Where UserID = 1
Group By UserId, Age
SELECT
u.UserId,
u.Age,
b.AvgAge
FROM
dbo.Users a,
(SELECT AVG(Age*1e0) as AvgAge FROM dbo.Users) as b
declare @T table (UserID int, Age int)
insert into @T values(1,22),(2,34),(3,23),(4,19)
declare @UserID int = 1
;with a as
(
select userid, Age,
avg(age * case when userid <> @userid then 1.0 end) over() 'AvgAge'
from @T
)
select Age, AvgAge from a
where userid = @UserID