sql >> Database >  >> RDS >> PostgreSQL

Histogram maken in PostgreSQL

Histogrammen helpen u de frequentieverdeling in gegevensanalyse en rapportage te visualiseren en snel inzicht te krijgen. Hier leest u hoe u een histogram maakt in PostgreSQL. We zullen een aantal verschillende manieren bekijken om frequentieverdeling in PostgreSQL te krijgen.

Histogram maken in PostgreSQL

Hier zijn de stappen om een ​​histogram te maken in PostgreSQL.

Stel dat u de volgende tabel sales(order_date, sale) . heeft

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

Bonus Lezen:Gebruiker maken in PostgreSQL

Histogram maken in PostgreSQL

Er zijn meerdere PostgreSQL Histogram-query's om een ​​histogram te maken in PostgreSQL. We zullen ze allemaal bekijken.

Eenvoudigste manier om histogram te maken in PostgreSQL

Als u wilt dat PostgreSQL-histogrambakken gelijke intervallen hebben (10-20, 20-30, 30-40, enz.), dan is hier de SQL-query om frequentieverdeling in PostgreSQL te maken.

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

In de bovenstaande zoekopdracht berekenen we het baknummer door elke verkoopwaarde te delen door de histogrambakgrootte, dat wil zeggen 10. Als u de bakgrootte wilt wijzigen in 25, wijzigt u floor(sale/10 )*10 tot etage(sale/25 )*25

Bonus lezen: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 |
+-----------+----------+

Het voordeel van de bovenstaande methode is dat deze automatisch de bakken verandert op basis van toevoeging/verwijdering/wijziging van gegevens. Het maakt ook nieuwe bakken voor nieuwe gegevens en/of verwijdert bakken als hun aantal 0 wordt. U kunt dus dynamisch een histogram maken in PostgreSQL.

Bonus lezen:PostgreSQL-index maken

Meest flexibele manier om histrogram te maken in PostgreSQL

Als u al weet welke histogrambakken moeten worden gemaakt of als de grootte van uw histogrambak verschilt, kunt u een frequentieverdeling maken met behulp van de CASE-instructie. Hier is de histogramquery voor 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 deze query wijzen we een bucket toe voor elke verkoopwaarde met behulp van de case-instructie. U kunt de histogram-buckets wijzigen in elk gewenst bereik, ze hoeven geen uniforme intervallen te hebben.

Deze zoekopdracht heeft 2 voordelen:

  1. U kunt de naam van de bucket wijzigen in alles wat u maar wilt. In plaats van bijvoorbeeld "100-150" weer te geven, kunt u het weergeven als "tussen 100 en 150"
  2. U kunt een niet-uniforme emmer hebben. U kunt bijvoorbeeld een emmer hebben als 100-150 met een emmergrootte van 50, en een andere emmer als 150-250 met een emmergrootte van 100.

Afhankelijk van uw vereisten, kunt u een van de bovenstaande methoden kiezen om een ​​histogram te maken in PostgreSQL.

Ubiq maakt het gemakkelijk om gegevens binnen enkele minuten te visualiseren en in realtime dashboards te controleren. Probeer het vandaag nog!

  1. Hoe de nieuwste vier items per categorie SELECTEREN?

  2. Hoe kan ik een lijst maken Array met de cursorgegevens in Android

  3. Voorkom SQL-injectieaanvallen in een Java-programma

  4. Vertegenwoordigen van IPv4/IPv6-adressen in Oracle