Я пытаюсь подсчитать, посещал ли пользователь сайт в трех временных диапазонах:
- последние 30 дней
- от 31 до 60 дней
- от 61 до 90 дней
Я использую Netezza, которая НЕ поддерживает коррелированные подзапросы в предложении SELECT. См. Rextester для успешного запроса, который необходимо переписать, чтобы НЕ использовать коррелированный подзапрос: http://rextester.com/JGR62033< /а>сильный>
Пример данных:
| user_id | last_visit | num_days_since_2017117 |
|---------|------------|------------------------|
| 1234 | 2017-11-02 | 15.6 |
| 1234 | 2017-09-30 | 48.6 |
| 1234 | 2017-09-03 | 75.0 |
| 1234 | 2017-08-21 | 88.0 |
| 9876 | 2017-10-03 | 45.0 |
| 9876 | 2017-07-20 | 120.0 |
| 5545 | 2017-09-15 | 63.0 |
Желаемый результат:
| user_id | last_30 | btwn_31_60 | btwn_61_90 |
|---------|---------|------------|------------|
| 1234 | 1 | 1 | 1 |
| 5545 | 0 | 0 | 1 |
| 9876 | 0 | 1 | 0 |
SELECT user_id, SUM(CASE WHEN num_days <= 30 then 1 else 0 end) as last_30, SUM(CASE WHEN numdays > 30 AND numdays <=60 then 1 else 0 end) as btwn_31_60,
и т. д. с GROUP BY для user_id. - person Ken White   schedule 17.11.2017