powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Значения строк в столбцы выдачи (вопрос для гуру).
5 сообщений из 5, страница 1 из 1
Значения строк в столбцы выдачи (вопрос для гуру).
    #39821328
thunderamur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE TABLE worktime (
  id SERIAL PRIMARY KEY,
  date date NOT NULL,
  name varchar(50) NOT NULL,
  hours integer
);

INSERT INTO worktime (date, name, hours) VALUES('2019-05-01','Андрей',8);
INSERT INTO worktime (date, name, hours) VALUES('2019-05-01','Василий',11);
INSERT INTO worktime (date, name, hours) VALUES('2019-05-02','Роман',7);
INSERT INTO worktime (date, name, hours) VALUES('2019-05-05','Андрей',6);
INSERT INTO worktime (date, name, hours) VALUES('2019-05-10','Роман',11);
INSERT INTO worktime (date, name, hours) VALUES('2019-06-01','Василий',6);



Возможно ли получить выдачу в виде:
name; 2019-05-01;2019-05-02;2019-05-05;sum_hoursАндрей;8;-;6;14Василий;11;-;-;11Роман;-;7;-;7
Столбцы без значений (2019-05-03, 2019-05-04) не выводятся.

Сейчас имею:
Код: sql
1.
SELECT name, SUM(hours) as sum_hours FROM worktime WHERE date BETWEEN '2019-05-01' AND '2019-05-05' GROUP BY name;


name;sum_hoursАндрей;14Василий;11Роман;7

http://sqlfiddle.com/#!17/884b8/15/0
...
Рейтинг: 0 / 0
Значения строк в столбцы выдачи (вопрос для гуру).
    #39821335
thunderamur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если не знаете решения тоже пишите. Я просто хочу понять можно ли это сделать одним запросом или использовать python для формирования требуемого результата.
...
Рейтинг: 0 / 0
Значения строк в столбцы выдачи (вопрос для гуру).
    #39821453
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
thunderamur,

сначала нужно сгенерировать представление-справочник, от min(date) до max(date), поможет generate_series.
Далее сделать left join таблицы worktime. Итого, отлавливаются пропуски дат и вместо значений имеем null. Следующее это аггрегация строк через string_agg
...
Рейтинг: 0 / 0
Значения строк в столбцы выдачи (вопрос для гуру).
    #39821545
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
thunderamur,

Возможно вам поможет crosstab из https://www.postgresql.org/docs/current/tablefunc.html
или же \crosstabview в 10+ версии (это в psql только).
...
Рейтинг: 0 / 0
Значения строк в столбцы выдачи (вопрос для гуру).
    #39821851
thunderamur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Товарищи, спасибо за участие. Читаю про generate_series, string_agg и crosstab.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Значения строк в столбцы выдачи (вопрос для гуру).
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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