PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como criar histograma no PostgreSQL


Os histogramas ajudam você a visualizar a distribuição de frequência na análise de dados e relatórios e obter insights rapidamente. Veja como criar histograma no PostgreSQL. Veremos algumas maneiras diferentes de obter distribuição de frequência no PostgreSQL.


Como criar histograma no PostgreSQL


Aqui estão os passos para criar histograma no PostgreSQL.

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



Bônus de leitura:Criar usuário no PostgreSQL


Criar histograma no PostgreSQL


Existem várias consultas de histograma do PostgreSQL para criar histograma no PostgreSQL. Veremos cada um deles.


Maneira mais simples de criar Histograma no PostgreSQL


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

Na consulta acima, calculamos o número do compartimento dividindo cada valor de venda pelo tamanho do compartimento do histograma, ou seja, 10. Se você quiser alterar o tamanho do compartimento para 25, altere piso(venda/10 )*10 para andar(venda/25 )*25

Bônus de leitura: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 |
+-----------+----------+

A vantagem do método acima é que ele altera automaticamente os compartimentos com base na adição/exclusão/modificação de dados. Ele também cria novos compartimentos para novos dados e/ou remove compartimentos caso sua contagem se torne 0. Assim, permite criar histogramas dinamicamente no PostgreSQL.

Leitura Bônus:PostgreSQL Criar Índice


A maneira mais flexível de criar histrogramas no PostgreSQL


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 do histograma para o 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 |
+------------+-------+

Nesta consulta, atribuímos um intervalo para cada valor de venda usando a instrução case. Você pode alterar os buckets do histograma para qualquer intervalo que desejar, eles não precisam ter intervalos uniformes.

Esta consulta tem 2 vantagens:
  1. Você pode alterar o nome do bucket para o que quiser. Por exemplo, em vez de exibir "100-150", você pode exibi-lo como "entre 100 e 150"
  2. Você pode ter um tamanho de bucket não uniforme. Por exemplo, você pode ter um bucket de 100 a 150 com um tamanho de bucket de 50 e outro bucket de 150 a 250 com um tamanho de bucket de 100.



Dependendo de sua necessidade, você pode escolher qualquer um dos métodos acima para criar um histograma no PostgreSQL.

O Ubiq facilita a visualização de dados em minutos e o monitoramento em painéis em tempo real. Experimente hoje!