Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como criar histograma no MySQL?


O histograma ajuda você a traçar a distribuição de frequência dos dados e a obter informações rapidamente. Veja como criar histograma no MySQL. Você pode usá-lo para criar distribuição de frequência no MySQL e no PostgreSQL.


Como criar histograma no MySQL?


Aqui está a consulta SQL para criar histograma no MySQL.

Digamos que você tenha a seguinte tabela vendas(data_pedido, venda)
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

Bônus de leitura:Como importar arquivo CSV para o MySQL


Criar histograma no MySQL


Existem várias consultas do MySQL Histrogram para criar histograma no MySQL. Veremos cada um deles.


Maneira mais simples de criar histograma no MySQL


Se os bins do histograma do MySQL tiverem intervalos iguais (10-20, 20-30, 30-40, etc.), aqui está a consulta SQL para criar a distribuição de frequência no 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 |
+-----------+----------+

Na consulta acima, o tamanho do compartimento do histograma é 10. Se você quiser alterar o tamanho do compartimento para 25, altere piso(venda/10 )*10 para andar(venda/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 |
+-----------+----------+

A vantagem do método acima é que ele altera automaticamente os compartimentos com base na adição/exclusão/modificação de dados.

Bônus de leitura:Como calcular a taxa de conversão no MySQL


A maneira mais flexível de criar histrogramas no MySQL


Se você já conhece os compartimentos do histograma a serem criados ou se os tamanhos dos compartimentos do histograma são diferentes, você pode criar a distribuição de frequência usando a instrução CASE. Aqui está a consulta de histograma para 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 |
+------------+-------+

Nesta consulta, você pode alterar os buckets do histograma para qualquer intervalo que desejar, eles não precisam ter intervalos uniformes. Essa consulta funciona muito bem se você tiver de 5 a 10 buckets.

Bônus de leitura:Como preencher datas ausentes no MySQL



Depois de criar a distribuição de frequência no MySQL, você pode usar uma ferramenta de gráficos para plotá-la em um gráfico de colunas. Aqui está um gráfico criado usando Ubiq.





A propósito, se você deseja criar gráficos, painéis e relatórios do banco de dados MySQL, experimente o Ubiq. Oferecemos um teste gratuito de 14 dias.