我如何合并我的数据以减少 MariaDB 中不同值的数量?
How do I coalesce my data to reduce the number of different values in MariaDB?
我有每秒一条记录的风速数据。我发现 95% + 的数据是 0.36 m/s 的倍数(参见屏幕截图 Wind Speeds),我希望找到的是我们仪器配置方式的结果(仍在努力)。
我想做的是将所有值向上或向下舍入到 0.36 的倍数,这样我就可以生成概率密度视觉图。
截图中的table来自这段代码:
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,但我就是无法让它做我想做的事。我真正想看到的是 table 类似的东西:
ws36 freq
0.00 4000
0.36 500
0.72 600
1.08 800
etc.
我在想一个更简单的查询:
SELECT ROUND(rd.wind_speed / 0.36, 0) * 0.36 as wind_speed_036,
COUNT(*) as cnt
FROM raw_data rd
GROUP BY wind_speed_036
ORDER BY wind_speed_036;
我有每秒一条记录的风速数据。我发现 95% + 的数据是 0.36 m/s 的倍数(参见屏幕截图 Wind Speeds),我希望找到的是我们仪器配置方式的结果(仍在努力)。
我想做的是将所有值向上或向下舍入到 0.36 的倍数,这样我就可以生成概率密度视觉图。
截图中的table来自这段代码:
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,但我就是无法让它做我想做的事。我真正想看到的是 table 类似的东西:
ws36 freq
0.00 4000
0.36 500
0.72 600
1.08 800
etc.
我在想一个更简单的查询:
SELECT ROUND(rd.wind_speed / 0.36, 0) * 0.36 as wind_speed_036,
COUNT(*) as cnt
FROM raw_data rd
GROUP BY wind_speed_036
ORDER BY wind_speed_036;