我有每秒一条记录的风速数据。我发现 95% 以上的数据是 0.36 m/s 的倍数(参见截图Wind Speeds),我希望这是我们仪器配置方式的结果(仍在研究中) )。
我想要做的是将所有值向上或向下舍入到 0.36 的倍数,这样我就可以生成概率密度视觉。
截图中的表格来自这段代码:
WITH freqCTE AS
(
SELECT rd.wind_speed,
COUNT(rd.wind_speed) AS AbsFreq,
CAST(ROUND(100. * (COUNT(rd.wind_speed)) / (SELECT COUNT(*) FROM raw_data), 3) AS DEC(4,3)) AS AbsPerc
FROM raw_data AS rd
GROUP BY rd.wind_speed
)
SELECT wind_speed, AbsFreq,
SUM(AbsFreq) OVER(ORDER BY wind_speed ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS CumFreq,
AbsPerc,
SUM(AbsPerc) OVER(ORDER BY wind_speed ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS CumPerc,
CAST(REPEAT('.',AbsPerc*100) AS VARCHAR(200)) AS Histogram
FROM freqCTE
ORDER BY wind_speed;
而且我知道我可以像这样绕过风速:
ROUND(rd.wind_speed / 0.36, 0) * 0.36
我在 CTE 内尝试了各种事情,在 CTE 之后,尝试使用 SET,但我无法让它做我想做的事。我真正想看到的是一个类似的表格:
ws36 freq
0.00 4000
0.36 500
0.72 600
1.08 800
etc.