【发布时间】:2016-10-05 23:15:35
【问题描述】:
我有下表:
请帮助我在 SQL 中使用以下查询: “平均值(值 2/值 1,值 3/值 2,值 4/值 3)”
非常感谢!
【问题讨论】:
-
您使用的是哪个 DBMS??
标签: sql
我有下表:
请帮助我在 SQL 中使用以下查询: “平均值(值 2/值 1,值 3/值 2,值 4/值 3)”
非常感谢!
【问题讨论】:
标签: sql
对于 SQL Server 2008 或更高版本;
; WITH CTE AS
(
SELECT *, LAG(VALUE) OVER(ORDER BY MONTH) AS XX FROM YOURTABLE
)
SELECT AVG(CAST(VALUE AS FLOAT) / CAST(XX AS FLOAT)) FROM CTE WHERE XX IS NOT NULL
【讨论】:
SQL SERVER 也不支持LAG。
LAG() 是 ANSI 标准功能。
试试这个:
SELECT AVG(Calc)
FROM
(
SELECT t2.Value/t1.Value AS Calc
FROM [Table] t1
JOIN [Table] t2
ON t1.[Month] = t2.[Month] + 1
) calc
【讨论】:
试试下面的查询。
select avg(CAST(a.value as FLOAT)/cast(a.mm as FLOAT)) from
(
SELECT *, LAG(value) OVER(ORDER BY MONTH) AS mm FROM #your_table
)
a where a.mm is not null
如果您有任何疑虑,请告诉我们
【讨论】:
我想使用查询 SQL:
如果我选择month=3 => result = AVG(value2/value1,value3/value2)-1
如果我选择月份=4 结果 = AVG(value2/value1,value3/value2,value4/value3)-1
谢谢
【讨论】: