【发布时间】:2017-04-28 16:30:48
【问题描述】:
【问题讨论】:
-
您使用的是什么数据库引擎和版本?你试过什么代码?
标签: sql function aggregate operation
【问题讨论】:
标签: sql function aggregate operation
MSSQL Server 上的 TSQL 具有窗口函数。 OVER Clause
SELECT
[AccelX]
,[AccelX] - AVG([AccelX]) OVER ()
FROM T
【讨论】:
这通常使用AVG的解析版本来完成:
select accelx - avg(accelx) over ()
from mytable;
【讨论】:
partition by userName
SELECT t1.accelx - t2.avgx as Z, userName
FROM TableName as t1
JOIN (SELECT userName, avg(accelx) as avgx
FROM TableName
GROUP BY userName) as t2
ON t1.userName = t2.userName
【讨论】:
试试这个:
select t1.accelx - t2.avgx as Z
from TableName as t1
inner join (
select avg(accelx) as avgx
from TableName
) as t2
on 1 = 1
【讨论】:
on 1 = 1?这是一个交叉连接,因此您应该将 inner join 替换为 cross join 并删除虚拟的 on 子句。
只需在子查询中计算AVG:
SELECT AccelX - (SELECT AVG(AccelX) FROM T)
FROM T
【讨论】:
AVG(AccelX) OVER ()