sql >> Database >  >> RDS >> Mysql

Hoe maak je een histogram in MySQL?

Histogram helpt u de frequentieverdeling uit gegevens te plotten en snel inzichten te verkrijgen. Hier leest u hoe u een histogram maakt in MySQL. U kunt het gebruiken om frequentieverdeling in MySQL en PostgreSQL te creëren.

Hoe maak je een histogram in MySQL?

Hier is de SQL-query om een ​​histogram te maken in MySQL.

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

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 Lezen:CSV-bestand importeren in MySQL

Histogram maken in MySQL

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

Eenvoudigste manier om histogram te maken in MySQL

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

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 de bovenstaande zoekopdracht is de histogrambakgrootte 10. Als u de bakgrootte wilt wijzigen in 25, wijzigt u floor(sale/10 )*10 tot etage(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 |
+-----------+----------+

Het voordeel van de bovenstaande methode is dat deze automatisch de bakken verandert op basis van toevoeging/verwijdering/wijziging van gegevens.

Bonus Lezen:Hoe de conversieratio in MySQL te berekenen

Meest flexibele manier om histrogram te maken in MySQL

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 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 deze query kunt u de histogram-buckets wijzigen in elk gewenst bereik, ze hoeven geen uniforme intervallen te hebben. Deze zoekopdracht werkt prima als je 5-10 buckets hebt.

Bonus lezen:ontbrekende datums in MySQL invullen

Nadat u de frequentieverdeling in MySQL hebt gemaakt, kunt u een grafiektool gebruiken om deze in een kolomdiagram te plotten. Hier is een grafiek gemaakt met Ubiq.

Trouwens, als je grafieken, dashboards en rapporten uit de MySQL-database wilt maken, kun je Ubiq proberen. We bieden een gratis proefperiode van 14 dagen aan.

  1. Hoe een lijst met tabellen te krijgen zonder primaire sleutelbeperking in alle databases van SQL Server-instantie - SQL Server / TSQL-zelfstudie, deel 62

  2. Back-ups maken van SQL-databases met de VDP Advanced SQL Agent

  3. PgBouncer 1.7 - "Kleuren variëren na opstanding"

  4. Wat is het Oracle-datumopmaakmasker voor tijdzones?