如何在T-SQL中构造此查询

Sao*_*obi 1 sql t-sql

我有一张桌子:

ID A    B    C    D
1  10   20   30   5
2  332  80   32   12
3  41   20   82   42
.
.
.
Run Code Online (Sandbox Code Playgroud)

我想查询给我

A   B   C   D
Run Code Online (Sandbox Code Playgroud)

其中A包含表格前30行的A列平均值,按ID升序排序,B包含表格前30行的B列平均值,按ID升序排序等.

如果表的行数少于30行,则仍然取平均值,但平均值不超过行数.

Guf*_*ffa 6

首先选出30行,从中选择以获得平均值:

select avg(A), avg(B), avg(C), avg(D)
from (
   select top 30 A, B, C, D
   from TheTable
   order by ID
) x
Run Code Online (Sandbox Code Playgroud)