MySQL 中的直方图数据提取
MySQL 本身对将数据分箱到预定义间隔以进行直方图绘制提供有限的支持。但是,可以使用修改后的方法来完成此任务。
您提供的 SQL 查询:
select total, count(total) from faults GROUP BY total;
生成过多的行。要将数据分组到预定义的 bin 中,您可以考虑以下解决方法:
ROUND(numeric_value, -2) AS 存储桶,
COUNT(*) AS COUNT, RPAD('', LN(COUNT(*)), '*') AS bar
FROM my_table
GROUP BY 存储桶;
通过调整舍入增量,您可以定义 bin 大小。例如,ROUND(numeric_value, -2) 将数据分组为 100 个桶(-200 到 -100、-100 到 0 等)。
修改 ROUND 操作中的偏移量可确保第一个桶包含与后续存储桶一样多的元素。对于 ROUND(numeric_value, -1),[0,4] 范围内的 numeric_value(5 个元素)将被放置在第一个存储桶中,而 [5,14](10 个元素)将被放置在第二个存储桶中,[15,24] 将被放置在第二个存储桶中。第三,除非 numeric_value 通过 ROUND(numeric_value - 5, -1) 适当偏移。
作为示例,以下查询生成具有对数条形缩放的直方图:
SELECT ROUND(total, -2) AS bucket, COUNT(*) AS COUNT, RPAD('', LN(COUNT(*)), '*') AS bar FROM faults GROUP BY bucket;
这种方法提供了一种在 MySQL 中创建直方图的快速且适应性强的方法,允许轻松定制特定用例。
以上是如何在 MySQL 中创建具有预定义间隔的直方图?的详细内容。更多信息请关注PHP中文网其他相关文章!