Histogramm-Datenextraktion in MySQL
MySQL bietet nativ begrenzte Unterstützung für die Einteilung von Daten in vordefinierte Intervalle für die Histogrammdarstellung. Diese Aufgabe kann jedoch mit einem modifizierten Ansatz gelöst werden.
Die von Ihnen bereitgestellte SQL-Abfrage:
select total, count(total) from faults GROUP BY total;
erzeugt eine übermäßige Anzahl von Zeilen. Um Daten in vordefinierte Bins zu gruppieren, können Sie die folgende Problemumgehung in Betracht ziehen:
ROUND(numeric_value, -2) AS Bucket,
COUNT(*) AS COUNT, RPAD('', LN(COUNT(*)), '*') AS bar
FROM my_table
GROUP BY Bucket;
Durch Anpassen des RUNDUNGSinkrements können Sie die Bin-Größen definieren. Beispielsweise gruppiert ROUND(numerischer_Wert, -2) Daten in Buckets von 100 (-200 bis -100, -100 bis 0 usw.).
Durch Ändern des Offsets in der RUNDUNG-Operation wird sichergestellt, dass der erste Bucket enthält so viele Elemente wie nachfolgende Buckets. Für ROUND(numerischer_Wert, -1) wird der numerische_Wert im Bereich [0,4] (5 Elemente) im ersten Bucket platziert, während [5,14] (10 Elemente) im zweiten und [15,24] im Drittens, es sei denn, numeric_value wird über ROUND(numeric_value - 5, -1) entsprechend versetzt.
Als Beispiel generiert die folgende Abfrage ein Histogramm mit logarithmischer Balkenskalierung:
SELECT ROUND(total, -2) AS bucket, COUNT(*) AS COUNT, RPAD('', LN(COUNT(*)), '*') AS bar FROM faults GROUP BY bucket;
Dieser Ansatz bietet eine schnelle und anpassungsfähige Methode zum Erstellen von Histogrammen in MySQL, die eine einfache Anpassung an bestimmte Anwendungsfälle ermöglicht.
Das obige ist der detaillierte Inhalt vonWie erstelle ich Histogramme in MySQL mit vordefinierten Intervallen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!