sql >> Databasteknik >  >> RDS >> Mysql

Hur skapar man histogram i MySQL?

Histogram hjälper dig att plotta frekvensfördelning från data och dra insikter snabbt. Så här skapar du histogram i MySQL. Du kan använda den för att skapa frekvensdistribution i MySQL såväl som PostgreSQL.

Hur skapar man histogram i MySQL?

Här är SQL-frågan för att skapa histogram i MySQL.

Låt oss säga att du har följande tabell försäljning(orderdatum, rea)

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 Läs:Hur man importerar CSV-fil till MySQL

Skapa histogram i MySQL

Det finns flera MySQL Histrogram-frågor för att skapa histogram i MySQL. Vi kommer att titta på var och en av dem.

Enklaste sättet att skapa histogram i MySQL

Om dina MySQL-histogramfack har lika intervall (10-20, 20-30, 30-40, etc.) så är här SQL-frågan för att skapa frekvensdistribution i 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 |
+-----------+----------+

I ovanstående fråga är histogrammets lagerstorlek 10. Om du vill ändra lagerstorleken till 25, ändra floor(rea/10 )*10 till våning(rea/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 |
+-----------+----------+

Fördelen med metoden ovan är att den automatiskt ändrar soporna baserat på tillägg/radering/ändring av data.

Bonus Läs:Hur man beräknar omvandlingsfrekvens i MySQL

Det mest flexibla sättet att skapa histogram i MySQL

Om du redan vet vilka histogramfack som ska skapas eller om dina histogramhinkstorlekar är olika, kan du skapa frekvensfördelning med CASE-satsen. Här är histogramfrågan för 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 |
+------------+-------+

I den här frågan kan du ändra histogramsegmenten till vilket intervall du vill, de behöver inte ha enhetliga intervall. Den här frågan fungerar utmärkt om du har 5-10 hinkar.

Bonus Läs:Hur man fyller i saknade datum i MySQL

När du har skapat frekvensfördelning i MySQL kan du använda ett diagramverktyg för att plotta det i ett kolumndiagram. Här är en graf skapad med Ubiq.

Förresten, om du vill skapa diagram, instrumentpaneler &rapporter från MySQL-databasen kan du prova Ubiq. Vi erbjuder en 14-dagars gratis provperiod.

  1. Skillnad mellan Oracles plus (+) notation och ansi JOIN notation?

  2. Hur avinstallerar du MySQL från Mac OS X?

  3. Det gick inte att ladda DLL 'SqlServerSpatial.dll'

  4. Komplett guide för att åtgärda SQL Database Error 5243