Mysql
 sql >> Database >  >> RDS >> Mysql

Come creare un istogramma in MySQL?

L'istogramma ti aiuta a tracciare la distribuzione della frequenza dai dati e a trarre rapidamente informazioni dettagliate. Ecco come creare un istogramma in MySQL. Puoi usarlo per creare una distribuzione di frequenza sia in MySQL che in PostgreSQL.

Come creare un istogramma in MySQL?

Ecco la query SQL per creare l'istogramma in MySQL.

Supponiamo che tu abbia la seguente tabella 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

Bonus Lettura:come importare file CSV in MySQL

Crea istogramma in MySQL

Esistono più query MySQL Histrogram per creare istogrammi in MySQL. Esamineremo ciascuno di essi.

Il modo più semplice per creare istogramma in MySQL

Se i contenitori dell'istogramma MySQL hanno intervalli uguali (10-20, 20-30, 30-40, ecc.), ecco la query SQL per creare una distribuzione di frequenza in MySQL.

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 |
+-----------+----------+

Nella query precedente, la dimensione del contenitore dell'istogramma è 10. Se desideri modificare la dimensione del contenitore in 25, cambia floor(sale/10 )*10 a piano(vendita/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 |
+-----------+----------+

Il vantaggio del metodo sopra è che cambia automaticamente i contenitori in base all'aggiunta/cancellazione/modifica dei dati.

Bonus Leggi:Come calcolare il tasso di conversione in MySQL

Il modo più flessibile per creare istrogrammi in MySQL

Se conosci già i bin dell'istogramma da creare o se le dimensioni del bucket dell'istogramma sono diverse, puoi creare la distribuzione di frequenza utilizzando l'istruzione CASE. Ecco la query dell'istogramma per 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 questa query, puoi modificare i bucket dell'istogramma in qualsiasi intervallo desideri, non è necessario che abbiano intervalli uniformi. Questa query funziona perfettamente se hai 5-10 bucket.

Bonus Leggi:Come riempire le date mancanti in MySQL

Dopo aver creato la distribuzione di frequenza in MySQL, puoi utilizzare uno strumento di creazione di grafici per tracciarla in un istogramma. Ecco un grafico creato utilizzando Ubiq.

A proposito, se vuoi creare grafici, dashboard e report dal database MySQL, puoi provare Ubiq. Offriamo una prova gratuita di 14 giorni.