[英]How to calculate a group average in SQL?
我有一個 sql 數據集,它看起來像:
Name | Result | Year |
John | 9 | 2017 |
John | 5 | 2018 |
John | 12 | 2019 |
Sara | 7 | 2017 |
Sara | 9 | 2018 |
Sara | 18 | 2019 |
Peter | 9 | 2017 |
Peter | 20 | 2018 |
Peter | 2 | 2019 |
Rebecca | 2 | 2017 |
Rebecca | 21 | 2017 |
Rebecca | 6 | 2017 |
我希望能夠以查詢將返回的方式 select 數據:
Name | Result | Year | Average |
John | 9 | 2017 | 8.6 |
John | 5 | 2018 | 8.6 |
John | 12 | 2019 | 8.6 |
Sara | 7 | 2017 | 11.3 |
Sara | 9 | 2018 | 11.3 |
Sara | 18 | 2019 | 11.3 |
Peter | 9 | 2017 | 10.3 |
Peter | 20 | 2018 | 10.3 |
Peter | 2 | 2019 | 10.3 |
Rebecca | 2 | 2017 | 9.7 |
Rebecca | 21 | 2017 | 9.7 |
Rebecca | 6 | 2017 | 9.7 |
顯示每個人在 3 年內計算的平均結果。
我怎樣才能在 SQL 服務器中實現這一點?
我想你想要一個 window function:
select t.*,
avg(result * 1.0) over (partition by name) as result
from t;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.