sql - 如何合并我的数据以减少 MariaDB 中不同值的数量?
问题描述
我有每秒一条记录的风速数据。我发现 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.
解决方案
我正在考虑一个更简单的查询:
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;
推荐阅读
- postgresql - 如何横向加入函数
- blockchain - 在 PoW 网络中,当强大的矿工在场时,弱矿工如何获得奖励?
- asp.net-core - 将 Google AMP 应用于 MVC Core 应用程序(替代 MVC Core 的显示模式)
- django - Django:模拟模型的创建方法
- javascript - 如何通过两个相同的键按json数组分组
- machine-learning - 使用 word2vec 词嵌入作为特征向量进行文本分类(类似于计数向量器/tfidf 特征向量)
- dialogflow-es - 从单个单词中提取 2 个实体:对话流
- c++ - 带有 pthread 的 Makefile 无法在多个版本中正确编译
- javascript - JavaScript Object.defineProperty 不能按预期工作
- mysql - 将 MySQL 简单查询转换为 SQL Server