簡體   English   中英

如何計算 SQL 中的組平均值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM