Postgresql передать несколько диапазонов и проверить, находится ли значение в диапазоне - PullRequest
0 голосов
/ 04 августа 2020

У меня есть таблица пользователей, в которой есть столбец возраста. Мне нужно иметь возможность динамически создавать набор диапазонов и передавать его в процедуру, например:

[
  [0, 10],
  [10, 18],
  [18, 35],
]

В результате ему необходимо возвращать количество значений, принадлежащих каждому диапазону. Пример:

|min|max|count|
---------------
|  0| 10|   24|
| 10| 18|  111|
| 18| 35|    0|

Как я могу реализовать такую ​​процедуру?

1 Ответ

3 голосов
/ 04 августа 2020

Вы можете создать список из диапазонов и использовать его для присоединения к таблице, а затем сгруппировать по соответствующему диапазону:

with ranges (range) as (
  values 
    ( int4range(10,30) ), 
    ( int4range(10,18) ), 
    ( int4range(18,35) )
)
select r.range, count(t.age)
from ranges r
  left join the_table t on t.age <@ r.range
group by r.range;  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...