Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie erstelle ich ein Histogramm in MySQL?

Das Histogramm hilft Ihnen, die Häufigkeitsverteilung aus Daten darzustellen und schnell Erkenntnisse zu gewinnen. So erstellen Sie ein Histogramm in MySQL. Sie können damit sowohl in MySQL als auch in PostgreSQL eine Häufigkeitsverteilung erstellen.

Wie erstelle ich ein Histogramm in MySQL?

Hier ist die SQL-Abfrage zum Erstellen eines Histogramms in MySQL.

Nehmen wir an, Sie haben die folgende Tabelle sales(order_date, sale)

mysql> create table sales(order_date date,sale int);

mysql> insert into sales values('2020-04-01',210),
           ('2020-04-02',125),('2020-04-03',150),('2020-04-04',230),
           ('2020-04-05',200),('2020-04-10',220),('2020-04-06',250),
           ('2020-04-07',215),('2020-04-08',300),('2020-04-09',250);

mysql> select * from sales;
 order_date | sale
------------+------
 2020-04-01 |  210
 2020-04-02 |  125
 2020-04-03 |  150
 2020-04-04 |  230
 2020-04-05 |  200
 2020-04-10 |  220
 2020-04-06 |  250
 2020-04-07 |  215
 2020-04-08 |  300
 2020-04-09 |  250

Bonuslektüre:So importieren Sie eine CSV-Datei in MySQL

Histogramm in MySQL erstellen

Es gibt mehrere MySQL-Histogramm-Abfragen, um ein Histogramm in MySQL zu erstellen. Wir werden uns jeden von ihnen ansehen.

Einfachste Möglichkeit, ein Histogramm in MySQL zu erstellen

Wenn Ihre MySQL-Histogramm-Bins gleiche Intervalle haben (10-20, 20-30, 30-40 usw.), dann ist hier die SQL-Abfrage, um eine Häufigkeitsverteilung in MySQL zu erstellen.

mysql> select floor(sale/10)*10 as bin_floor, count(*)
     from sales
     group by 1
     order by 1;
+-----------+----------+
| bin_floor | count(*) |
+-----------+----------+
|       120 |        1 |
|       150 |        1 |
|       200 |        1 |
|       210 |        2 |
|       220 |        1 |
|       230 |        1 |
|       250 |        2 |
|       300 |        1 |
+-----------+----------+

In der obigen Abfrage ist die Bin-Größe des Histogramms 10. Wenn Sie die Bin-Größe auf 25 ändern möchten, ändern Sie floor(sale/10 )*10 bis floor(sale/25 )*25

mysql> select floor(sale/25)*25 as bin_floor, count(*)
     from sales
     group by 1
     order by 1;
+-----------+----------+
| bin_floor | count(*) |
+-----------+----------+
|       125 |        1 |
|       150 |        1 |
|       200 |        4 |
|       225 |        1 |
|       250 |        2 |
|       300 |        1 |
+-----------+----------+

Der Vorteil der obigen Methode besteht darin, dass die Bins basierend auf dem Hinzufügen/Löschen/Ändern von Daten automatisch geändert werden.

Bonuslektüre:Wie man die Konversionsrate in MySQL berechnet

Flexibelster Weg zum Erstellen von Histogrammen in MySQL

Wenn Sie die zu erstellenden Histogramm-Bins bereits kennen oder Ihre Histogramm-Bucket-Größen unterschiedlich sind, können Sie die Häufigkeitsverteilung mithilfe der CASE-Anweisung erstellen. Hier ist die Histogramm-Abfrage für MySQL

mysql> select "100-150" as TotalRange,count(sale) as Count from sales
        where sale between 100 and 150
     union (
     select "150-200" as TotalRange,count(sale) as Count from sales
        where sale between 150 and 200)
     union (
     select "200-225" as TotalRange,count(sale) as Count from sales
        where sale between 200 and 225)
     union (
     select "225-250" as TotalRange,count(sale) as Count from sales
        where sale between 225 and 250);
+------------+-------+
| TotalRange | Count |
+------------+-------+
| 100-150    |     2 |
| 150-200    |     2 |
| 200-225    |     4 |
| 225-250    |     3 |
+------------+-------+

In dieser Abfrage können Sie die Histogramm-Buckets in einen beliebigen Bereich ändern, sie müssen keine einheitlichen Intervalle haben. Diese Abfrage funktioniert hervorragend, wenn Sie 5–10 Buckets haben.

Bonuslektüre:Wie man fehlende Daten in MySQL einträgt

Nachdem Sie die Häufigkeitsverteilung in MySQL erstellt haben, können Sie sie mit einem Diagrammtool in einem Säulendiagramm darstellen. Hier ist ein Diagramm, das mit Ubiq erstellt wurde.

Übrigens, wenn Sie Diagramme, Dashboards und Berichte aus einer MySQL-Datenbank erstellen möchten, können Sie Ubiq ausprobieren. Wir bieten eine 14-tägige kostenlose Testversion an.