- Categorias:
WIDTH_BUCKET¶
Cria histogramas de largura equivalente, nos quais o alcance dos histogramas é dividido em intervalos de tamanho idêntico, e retorna o número do bucket que recebe o valor de uma expressão após ter sido avaliada. A função retorna um valor inteiro ou nulo (se alguma entrada for nula).
Sintaxe¶
WIDTH_BUCKET( <expr> , <min_value> , <max_value> , <num_buckets> )
Argumentos¶
expr
A expressão para a qual o histograma é criado. Esta expressão deve ser avaliada como um valor numérico ou como um valor que possa ser implicitamente convertido em um valor numérico.
O valor deve estar dentro da faixa de
-(2^53 - 1)
a2^53 - 1
(inclusive).min_value
emax_value
Os pontos baixos e altos da faixa aceitável para a expressão. Os pontos finais também devem ser avaliados como valores numéricos e não devem ser iguais.
Os pontos baixo e alto devem estar dentro da faixa de
-(2^53 - 1)
a2^53 - 1
(inclusive). Além disso, a diferença entre estes pontos deve ser inferior a2^53
(isto é,abs(max_value - min_value) < 2^53
).num_buckets
O número desejado de buckets; deve ser um valor inteiro positivo. Um valor da expressão é atribuído a cada bucket, e a função retorna então o número do bucket correspondente.
Quando uma expressão fica fora do intervalo, a função retorna:
0
se a expressão for inferior amin_value
.num_buckets + 1
se a expressão for maior ou igual amax_value
.
Exemplo¶
Crie um histograma de quatro buckets na coluna price
para casas vendidas na faixa de preço de $200 - 600 mil, ordenado por data de venda. A função retorna o número do bucket (SALES GROUP
) para cada valor do conjunto.
Criar e preencher uma tabela:
CREATE TABLE home_sales ( sale_date DATE, price NUMBER(11, 2) ); INSERT INTO home_sales (sale_date, price) VALUES ('2013-08-01'::DATE, 290000.00), ('2014-02-01'::DATE, 320000.00), ('2015-04-01'::DATE, 399999.99), ('2016-04-01'::DATE, 400000.00), ('2017-04-01'::DATE, 470000.00), ('2018-04-01'::DATE, 510000.00);Consulte a tabela, chamando WIDTH_BUCKET():
SELECT sale_date, price, WIDTH_BUCKET(price, 200000, 600000, 4) AS "SALES GROUP" FROM home_sales ORDER BY sale_date; +------------+-----------+-------------+ | SALE_DATE | PRICE | SALES GROUP | |------------+-----------+-------------| | 2013-08-01 | 290000.00 | 1 | | 2014-02-01 | 320000.00 | 2 | | 2015-04-01 | 399999.99 | 2 | | 2016-04-01 | 400000.00 | 3 | | 2017-04-01 | 470000.00 | 3 | | 2018-04-01 | 510000.00 | 4 | +------------+-----------+-------------+