У меня есть данные о скорости ветра с одной записью в секунду.Я обнаружил, что 95% + данных кратны 0,36 м / с (см. Скриншот Скорость ветра ), и я ожидаю, что это результат того, как наш инструментсконфигурирован (все еще работает над этим).
Я хочу округлить все значения в большую или меньшую сторону до значения, кратного 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.