私は当初考えていたはずのSQLクエリに苦労しています。SQL - 他のすべての行の平均を持つ一意の行を選択してください
PKとしてUserID
とユーザーの年齢のための列Age
を使用するテーブルをUsers
想像:私はユーザーIDを指定し、そのユーザの年齢を返すだけでなく、できるようにしたいと思い
UserID Age
1 22
2 34
3 23
4 19
etc.
他のすべてのユーザーの平均年齢。
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
誰でもすることができます私は、ユーザーID 1を指定した場合たとえば、私はリターンのように設定してもらいたいです私を正しい方向に向ける?
ところで、理想的な世界では、平均年齢はではなく、には、他の人の平均年齢を基準にした年齢を表示するというアイデアが記載されています。
もし1000人以上のユーザーがいるとすれば、すべてのユーザーに平均をとってもAvgAge
という数字には実質的な違いはありませんが、その解決策を使ってSQLの腕前を見せたいと思ったら、それを見るために。要求されたよう
Select
UserID,
Age,
(select Max(Age) from Users) as 'AvgAge'
From Users
Where UserID = 1
'* 1.0'は' AVG'が整数ではなく浮動小数点を生成することを保証すると仮定していますか? –
@Remnant - はい。さもなければ、 'Age'が' int'であると仮定して '25'を得るでしょう。 –
@Remnant - 実際には 'float'ではなく数値(38,6)です。 –