PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come creare un istogramma in PostgreSQL

Gli istogrammi ti aiutano a visualizzare la distribuzione della frequenza nell'analisi dei dati e nei rapporti e a ottenere rapidamente informazioni dettagliate. Ecco come creare un istogramma in PostgreSQL. Esamineremo un paio di modi diversi per ottenere la distribuzione della frequenza in PostgreSQL.

Come creare un istogramma in PostgreSQL

Ecco i passaggi per creare l'istogramma in PostgreSQL.

Supponiamo che tu abbia la seguente tabella sales(order_date, sale)

postgres=# create table sales(order_date date,sale int);

postgres=# 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);

postgres=# 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

Lettura bonus:Crea utente in PostgreSQL

Crea istogramma in PostgreSQL

Esistono più query di istogramma PostgreSQL per creare istogramma in PostgreSQL. Esamineremo ciascuno di essi.

Il modo più semplice per creare istogramma in PostgreSQL

Se vuoi che i bin dell'istogramma di PostgreSQL  abbiano intervalli uguali (10-20, 20-30, 30-40, ecc.), ecco la query SQL per creare una distribuzione di frequenza in PostgreSQL.

postgres=# 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, calcoliamo il numero di bin dividendo ogni valore di vendita per la dimensione del bin dell'istogramma, ovvero 10. Se desideri modificare la dimensione del bin in 25, cambia floor(sale/10 )*10 a piano(vendita/25 )*25

Bonus Lettura:PostgreSQL DROP VIEW

postgres=# 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 bin in base all'aggiunta/cancellazione/modifica dei dati. Crea anche nuovi bin per nuovi dati e/o rimuove i bin nel caso in cui il loro conteggio diventi 0. Quindi ti consente di creare dinamicamente istogramma in PostgreSQL.

Bonus Lettura:PostgreSQL Crea Indice

Il modo più flessibile per creare un istrogramma in PostgreSQL

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 PostgreSQL

postgresql=# 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, assegniamo un bucket per ogni valore di vendita utilizzando l'istruzione case. Puoi modificare i bucket dell'istogramma in qualsiasi intervallo desideri, non è necessario che abbiano intervalli uniformi.

Questa query ha 2 vantaggi:

  1. Puoi cambiare il nome del bucket in qualsiasi cosa tu voglia. Ad esempio, invece di visualizzare "100-150" puoi mostrarlo come "tra 100 e 150"
  2. Puoi avere dimensioni del secchio non uniformi. Ad esempio, puoi avere un bucket come 100-150 con una dimensione del bucket di 50 e un altro bucket come 150-250 con una dimensione del bucket di 100.

A seconda delle tue esigenze, puoi scegliere uno dei metodi sopra indicati per creare istogramma in PostgreSQL.

Ubiq semplifica la visualizzazione dei dati in pochi minuti e il monitoraggio in dashboard in tempo reale. Provalo oggi!