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:
- 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"
- 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!