Redshift запрашивая данные о датах - PullRequest
0 голосов
/ 20 февраля 2020

Я пытаюсь запросить данные из таблицы красных смещений.

У меня есть таблица пользователей с такими столбцами, как имя , возраст , пол и create_at например:

|----|-----|------|----------|
|name|age  |gender|created_at|
------------------------------
|X   | 24  | F    | some_date|
______________________________

Мне нужно запросить таблицу выше, чтобы у меня были дополнительные столбцы, такие как creation_this_week , create_last_week , созданный_last_4_week , current_month , last_month и т. д. Дополнительные столбцы флага должны иметь значение «Y» для таких условий, как данные за последнюю неделю, текущую неделю, текущий месяц, последний месяц, последние 4 недели (исключая эту неделю), поэтому последние 4 недели, начиная с прошлой недели, и т. д. c, что-то вроде ниже.

|----|-----|------|-----------|------------|---------|-----------|------------|---------|
|name|age  |gender|created_at |current_week|last_week|last_4_week|current_mnth|last_mnth|
_________________________________________________________________________________________
| X  | 24  |  F   |CURRENTDATE|      Y     |   N     |     N     |    Y       |   N     |
_________________________________________________________________________________________
| F  | 21  |  M   | lst_wk_dt |      N     |   Y     |     Y     | Depends    | depends |
_________________________________________________________________________________________

Я новичок в PostgresSQL и Redshift, и все еще на этапе обучения, я потратил последние несколько часов, пытаясь сделать это сам, но безуспешно. Буду очень признателен, если кто-нибудь сможет мне помочь с этим.

1 Ответ

1 голос
/ 20 февраля 2020

Вы бы использовали case выражения:

select t.*,
       (case when created_at >= now() - interval '1 week' then 'Y' else 'N' end) as week1,
       (case when created_at >= now() - interval '4 week' then 'Y' else 'N' end) as week4,
       . . .
from t;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...