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中文網其他相關文章!