PSQL width_bucket не возвращает блоки одинаковой ширины - PullRequest
0 голосов
/ 28 июня 2018

Я использую PSQL версии 9.6.9 и пытаюсь использовать width_bucket () для генерации гистограммы с сегментами, состоящими из одинаковой ширины. Однако используемый мной запрос не возвращает сегменты одинаковой ширины.

Как видно из приведенного ниже примера, значения в сегменте имеют различную ширину. например ковш 1 имеет минимум 7 и максимум 18 - ширина 11. ковш 3 имеет минимум 52 и максимум 55 - ширина 3.

Как я могу настроить свой запрос, чтобы каждая корзина имела одинаковую ширину?

Вот как выглядят данные:

 value
-------
 7
 7
15
17
18
22
23
25
29
42
52
52
55
60
74
85
90
90
92
95

(20 строк)

Вот запрос и полученная гистограмма:

WITH min_max AS (
    SELECT 
        min(value) AS min_val,
        max(value) AS max_val
    FROM table
) 
SELECT 
    min(value),
    max(value),
    count(*),
    width_bucket(value, min_val, max_val, 5) AS bucket
FROM table, min_max  
GROUP BY bucket 
ORDER BY bucket;

 min | max | count | bucket
-----+-----+-------+--------
   7 |  23 |     7 |      1
  25 |  42 |     3 |      2
  52 |  55 |     3 |      3
  60 |  74 |     2 |      4
  85 |  92 |     4 |      5
  95 |  95 |     1 |      6
 ( 6 rows )

1 Ответ

0 голосов
/ 29 июня 2018

Ваши ведра одинакового размера. У вас просто нет данных, которые точно представляют конечные точки.

Например, 24 будет в первом или втором ведре? Это более заметно для диапазонов без каких-либо данных, таких как 75-83.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...