sql - 返回每行中每组的平均值

标签 sql sql-server

我正在使用 SQL Server 并且我有下表 exampleTable在我的数据库中:

<表类="s-表"> <头> 示例组 例子名 示例值 <正文> 一个 名字1 100 B 名字2 500 C 名字3 300 B 姓名4 700 一个 名字5 500 C 名字6 600

我的目标是返回以下结果,其中我在附加列中有每组的平均值:

<表类="s-表"> <头> 示例组 例子名 示例值 平均示例组 <正文> 一个 名字1 100 300 一个 名字5 500 300 B 名字2 500 600 B 姓名4 700 600 C 名字3 300 450 C 名字6 600 450

到目前为止我尝试了什么(错误,因为它不计算每组的平均值,而是计算所有列的总平均值):

SELECT 
    exampleGroup, exampleName, exampleValue,
    (SELECT AVG(exampleValue) FROM exampleTable) AS averageExampleGroup
FROM exampleTable;

最佳答案

你只需要像这样使用 OVER() 子句:

SELECT 
    exampleGroup, exampleName, exampleValue,
    AVG(exampleValue) OVER (PARTITION BY exampleGroup) AS GroupAvg
FROM exampleTable;

这会返回基于每个 exampleGroup平均值 作为结果集中的新列。

关于sql - 返回每行中每组的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66612156/

相关文章:

用于搜索小写字符串的 SQL 查询

SQL -- 在 select 语句中分配一个位变量

mysql - 错误代码 : 1442. 无法更新存储函数/触发器中的表 'students'

sql-server - 如何在检查约束中引用其他表?

sql - 在 SQL Server 中使用单个列表是否被认为是一种不好的做法?

asp.net - 为什么这个错误经常发生 "asp.net, sql server"?

sql - 按 Unix 时间戳 DESC 或 ASC 排序?

Mysql二叉树选择查询优化

sql-server - SSDT 如何在不丢失自定义客户端数据库对象的情况下使用 : Deploy . dacpac?

sql-server - 相当于在 SQL Server 中拖尾 MongoDB 操作日志?