我很努力地使用我最初認爲應該很簡單的SQL查詢。SQL - 選擇具有所有其他行的平均值的唯一行
想象一個表Users
一個使用UserID
作爲PK和用戶的年齡一欄Age
:
UserID Age
1 22
2 34
3 23
4 19
etc.
我希望能夠指定一個用戶名,並返回該用戶的年齡以及所有其他用戶的平均年齡。例如,如果我指定用戶ID 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而不是一個整數? – 2012-02-17 11:55:37
@Remnant - 是的。否則,假設'Age'和'int'是'25'。 – 2012-02-17 11:59:06
@Remnant - 在這種情況下,它實際上不是'float',而是'numeric(38,6)'。 – 2012-02-17 12:01:49