powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Невероятная группировка
3 сообщений из 3, страница 1 из 1
Невероятная группировка
    #39952021
Фотография Щиче
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть таблица
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
CREATE TABLE act_ru_task
(
   id_                 varchar(64)     NOT NULL,
   rev_                integer,
   execution_id_       varchar(64),
   proc_inst_id_       varchar(64),
   proc_def_id_        varchar(64),
   case_execution_id_  varchar(64),
   case_inst_id_       varchar(64),
   case_def_id_        varchar(64),
   name_               varchar(255),
   parent_task_id_     varchar(64),
   description_        varchar(4000),
   task_def_key_       varchar(255),
   owner_              varchar(255),
   assignee_           varchar(255),
   delegation_         varchar(64),
   priority_           integer,
   create_time_        timestamp,
   due_date_           timestamp,
   follow_up_date_     timestamp,
   suspension_state_   integer,
   tenant_id_          varchar(64)
);



И есть запрос
Код: plsql
1.
2.
3.
4.
SELECT task.*
FROM act_ru_task task
GROUP BY task.id_,         task.due_date_
ORDER BY task.due_date_ ASC LIMIT 10 OFFSET 0;



Запрос работает! Вопрос, почему же он работает, если количество полей превышает количество в GROUP BY?

Версии сервера PostgreSQL 9.6.13, 10.12, 10.4.
...
Рейтинг: 0 / 0
Невероятная группировка
    #39952022
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
column "task.rev_" must appear in the GROUP BY clause or be used in an aggregate function

А вот если у вас реально есть ещё и первичный ключ по id_ - то это так называемый functional dependency. База знает что group by у вас идёт по уникальному ограничению и потому запрос может быть выполнен без неоднозначности.
...
Рейтинг: 0 / 0
Невероятная группировка
    #39952036
Фотография Щиче
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Melkij
column "task.rev_" must appear in the GROUP BY clause or be used in an aggregate function


А вот если у вас реально есть ещё и первичный ключ по id_ - то это так называемый functional dependency. База знает что group by у вас идёт по уникальному ограничению и потому запрос может быть выполнен без неоднозначности.

Спасибо
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Невероятная группировка
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]