Как создать таблицу посещаемости в postgresql? - PullRequest
0 голосов
/ 14 января 2020

У меня есть такая таблица (user_id - это int, а visited_at - это date):

 user_id | visited_at
---------+------------
      2  | 2020-01-14
      1  | 2020-01-14
      2  | 2020-01-13
      1  | 2020-01-12

Я хочу создать такую ​​таблицу:

user_id | 2020-01-12 | 2020-01-13 | 2020-01-14| 
--------+------------+------------+------------
      1 |     Y      |            |     Y     | 
      2 |            |      Y     |     Y     | 

Вот пример фиктивного кода:

CREATE temporary TABLE tbl (
  user_id    int
, visited_at date
);
INSERT INTO tbl VALUES
  ('2', '2020-01-14'),
  ('1', '2020-01-14'),
  ('2', '2020-01-13'),
  ('1', '2020-01-12');

Я бы хотел, чтобы столбцы были последними 30 днями (например), но без необходимости вводить их все. Я не знаю, означает ли это, что я не могу использовать crosstab. Фактические значения присутствия / отсутствия могут быть любыми (Y, TRUE и т. Д. c.)

Существует ли прямой способ сделать это?

1 Ответ

0 голосов
/ 15 января 2020

Зачем вам нужно 30 столбцов на каждый день? Если вы делаете добавление 3 месяца, то вам нужно создать около 90 столбцов. Вы можете добавить новый столбец is_present . Означает ли это, что ученик отсутствовал в тот день или нет.

USER_ID   |    VISITED_AT       |  IS_PRESENT |
-----------------------------------------------
    1     |   2020-01-11        |     Y       |    
    1     |   2020-01-12        |     Y       |  
    1     |   2020-01-13        |     N       |  
    2     |   2020-01-11        |     Y       |  
    3     |   2020-01-11        |     Y       |  
    1     |   2020-01-14        |     N       |  
    4     |   2020-01-11        |     Y       |  
    5     |   2020-01-11        |     N       |  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...