Sql 获得最后3份工资的平均工资
上面的列表是我数据库中的数据。我需要得到每个人前3个月工资的平均值,然后输出这个值Sql 获得最后3份工资的平均工资,sql,sql-server,tsql,Sql,Sql Server,Tsql,上面的列表是我数据库中的数据。我需要得到每个人前3个月工资的平均值,然后输出这个值 我不知道从哪里开始,所以到目前为止我无法提供我的任何工作 在SQL Server中,您可以使用row_number获取子查询中的最后三个工资。然后使用平均值: 欢迎来到stackoverflow。请阅读。使用适当的软件MySQL、Oracle、DB2等标记数据库问题很有帮助。。。和版本,例如sql-server-2014。语法和特性的差异通常会影响答案。这很好,因为每个实体只有4行数据。如果一个实体有6行数据会发
我不知道从哪里开始,所以到目前为止我无法提供我的任何工作 在SQL Server中,您可以使用row_number获取子查询中的最后三个工资。然后使用平均值:
欢迎来到stackoverflow。请阅读。使用适当的软件MySQL、Oracle、DB2等标记数据库问题很有帮助。。。和版本,例如sql-server-2014。语法和特性的差异通常会影响答案。这很好,因为每个实体只有4行数据。如果一个实体有6行数据会发生什么?@StarPilot无论每个实体有多少条记录,都会发生同样的事情。
+------------+--------+-----------+---------------+
| paydate | salary | ninumber | payrollnumber |
+------------+--------+-----------+---------------+
| 2015-05-15 | 1000 | jh330954b | 6 |
| 2015-04-15 | 1250 | jh330954b | 5 |
| 2015-03-15 | 800 | jh330954b | 4 |
| 2015-02-15 | 894 | jh330954b | 3 |
| 2015-05-15 | 500 | ew56780e | 6 |
| 2015-04-15 | 1500 | ew56780e | 5 |
| 2015-03-15 | 2500 | ew56780e | 4 |
| 2015-02-15 | 3000 | ew56780e | 3 |
| 2015-05-15 | 400 | rt321298z | 6 |
| 2015-04-15 | 582 | rt321298z | 5 |
| 2015-03-15 | 123 | rt321298z | 4 |
| 2015-02-15 | 659 | rt321298z | 3 |
+------------+--------+-----------+---------------+
select ninumber, avg(salary)
from (select t.*,
row_number() over (partition by ninumber order by payrollnumber desc) as seqnum
from table t
) t
where seqnum <= 3
group by ninumber;