Существует ли эквивалентная оконная функция PostgresSQL (или альтернативная процедура) для агрегатной функции bool_or ()? - PullRequest
0 голосов
/ 26 апреля 2018

Учитывая следующие данные:

select a,b from newtable;
 a | b
---+---
 a | f
 a | f
 a | f
 b | f
 b | f
 b | t
(6 rows)

Заявление

select a, bool_or(b) from newtable group by a;
 a | bool_or
---+---------
 a | f
 b | t

создаст одну строку для каждого отдельного значения (как и ожидалось от агрегатной функции).

Я искал эквивалентную оконную функцию , но, похоже, в PostgreSQL такой функции нет. Есть ли способ получить тот же результат? Просто чтобы прояснить, я искал этот результат:

 a | bool_or
---+---------
 a | f
 a | f
 a | f
 b | t
 b | t
 b | t 

1 Ответ

0 голосов
/ 26 апреля 2018

Хотя bool_or() явно не указан на странице документации PostgreSQL для оконных функций , вы все равно можете использовать агрегатные функции , такие как bool_or() или любую встроенную функцию поверх окон .

В документации к оконной функции сказано:

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

Таким образом, чтобы получить желаемый результат, используйте:

select a, bool_or(b) over w from newtable window w as (partition by a) ;
 a | bool_or
---+---------
 a | f
 a | f
 a | f
 b | t
 b | t
 b | t
(6 rows) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...