postgres 10 - преобразовать категориальный столбец в матрицу отсутствия присутствия - PullRequest
0 голосов
/ 25 января 2019

Я бы хотел создать новую таблицу примерно так:

оригинальный стол:

site_id, site_period
1,       period_a
2,       period_b
2,       period_c
3,       period_d
4,       period_a
4,       period_b

желаемая таблица:

site_id, period_a, period_b, period_c, period_d
1,       1,        0,        0,        0
2,       0,        1,        1,        0
3,       0,        0,        0,        1
4,       1,        1,        0,        0

Вероятно, это дублирующий вопрос, поскольку это относительно простая проблема, но я не знал, какой словарь использовать, чтобы описать его, чтобы найти решение. Я знаком с логикой кодирования, но не очень комфортно с SQL-запросами. Спасибо!

1 Ответ

0 голосов
/ 26 января 2019

Можно использовать CREATE TABLE ... AS SELECT и условное агрегирование.

CREATE TABLE desiredtable
AS
SELECT site_id,
       count(CASE site_period
               WHEN 'period_a' THEN
                 1
             END) period_a,
       ...
       count(CASE site_period
               WHEN 'period_d' THEN
                 1
             END) period_d
       FROM originaltable
       GROUP BY site_id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...