@artemfisher

Как сделать группировку в PostgreSQL по столбцам из списка выборки, выражениям и без GROUP BY?

Добрый день!
В документации PostgreSQL п.7.2.3 говорится следующее:
1.
В стандарте SQL GROUP BY может группировать только по столбцам исходной таблицы, но расширение PostgreSQL позволяет использовать в GROUP BY столбцы из списка выборки. Также возможна группировка по выражениям, а не просто именам столбцов.

2.
Если в запросе есть вызовы агрегатных функций, но нет предложения GROUP BY, строки всё равно будут группироваться: в результате окажется одна строка группы (или возможно, ни одной строки, если эта строка будет отброшена предложением HAVING). Это справедливо и для запросов, которые содержат только предложение HAVING, но не содержат вызовы агрегатных функций и предложение GROUP BY.


Приведите, пожалуйста, примеры. Не смог найти в интернете.
  • Вопрос задан
  • 163 просмотра
Пригласить эксперта
Ответы на вопрос 1
В примере выражение в атрибуте col, его нет в исходной таблице и такого поля вообще нет, однако по нему можно осуществлять группировку:
select 
   case t.price > 10 then 2 else 1 end col 
from t 
group by case t.price > 10 then 2 else 1 end ;

Из списка выборки с тем же самым выражением:
select 
 avg(price), col 
from (
  select 
    price, 
    case t.price > 10 then 2 else 1 end col 
  from t) 
group by col ;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы