我的数据是这样
wavelength reflectance
341.6 2.48
343.6 2.58
347.6 4.51
351.1 8.51
359.2 9.56
362.2 11.2
364.2 25.3
365.3 58.2
366.6 58.2
368.9 24.2
373.6 28.2我希望用10个波长间隔,它们之间的反射间隔是平均的,然后输出为I want output like this。
wavelength reflectnce
341.6 2.48
351.1 5.20
362.2 10.38
373.6 32.35如果我正在使用这个代码,它显示的波长间隔很好。现在,我要平均它们之间的反射间隔,然后把它放到下一行的反射率上。
;WITH CTE AS(
SELECT ROW_NUMBER() OVER(PARTITION BY CAST(wavelength AS INT)-CAST(wavelength AS INT)%10 ORDER BY wavelength) AS ROW_ID,wavelength,reflectance FROM Your_Table
)
SELECT wavelength,reflectance FROM CTE WHERE ROW_ID=1如果有人知道,请帮帮我..。
发布于 2014-02-28 09:04:41
我想你看起来像这样--> 演示(请单击我)
WITH CTE AS(
SELECT
ROW_NUMBER() OVER(
PARTITION BY CAST(wavelength AS INT)
-CAST(wavelength AS INT)%10
ORDER BY wavelength) AS ROW_ID,
wavelength,
avg( reflectance ) OVER(
PARTITION BY CAST(wavelength AS INT)
-CAST(wavelength AS INT)%10
ORDER BY wavelength
rows BETWEEN 1 FOLLOWING
and UNBOUNDED FOLLOWING) As reflectance
FROM
Your_Table
)
select wavelength, reflectance
from cte
where row_id = 1这是对示例数据的查询的结果:
| WAVELENGTH | REFLECTANCE |
|------------|-------------|
| 341.6 | 3.545 |
| 351.1 | 9.56 |
| 362.2 | 41.475 |
| 373.6 | (null) |计算的平均值不包括第一个值,
例如,对于输入数据中的下列行:
wavelength reflectance
341.6 2.48
343.6 2.58
347.6 4.51avg =( 2.58 + 4.51 )/2->跳过第一行
https://stackoverflow.com/questions/22088256
复制相似问题