У меня есть logins
таблицу, которая выглядит следующим образом:Создание запроса разделов, сообщая первый NOT NULL появление внутри раздела перед текущей строкой (если таковые имеются)
person_id | login_at | points_won
-----------+----------------+----------------------
1 | 2017-02-02 |
1 | 2017-02-01 |
2 | 2017-02-01 | 2
1 | 2017-01-29 | 2
2 | 2017-01-28 |
2 | 2017-01-25 | 1
3 | 2017-01-22 |
3 | 2017-01-21 |
1 | 2017-01-10 | 3
1 | 2017-01-01 | 1
Я хочу, чтобы создать результирующий набор, содержащий points_won
столбец, который должен работать примерно так: для каждого раздела строки, основанного на person_id
, укажите раздел на login_at desc
, затем сообщите о первом вхождении (но не в null) last_points_won упорядоченных строк в разделе (если есть).
Это должно привести к чему-то вроде этого:
person_id | login_at | points_won | last_points_won
-----------+----------------+----------------------+----------------------
1 | 2017-02-02 | | 2
1 | 2017-02-01 | | 2
2 | 2017-02-01 | 2 | 2
1 | 2017-01-29 | 2 | 2
2 | 2017-01-28 | | 1
2 | 2017-01-25 | 1 | 1
3 | 2017-01-22 | |
3 | 2017-01-21 | |
1 | 2017-01-10 | 3 | 3
1 | 2017-01-01 | 1 | 1
Или простыми словами:
для каждой строки, дай мне либо очки, выигранные во время этого входа или, если ничего, дайте Я получил очки, выигранные у лиц, прошедших предыдущий вход, где он фактически сделал очков.
Не уверен, что я понимаю ваш вопрос? –
'select l1. *, (Выберите max (made_confirmation_at) из логинов l2, где l1.person_id = l2.person_id), как last_confirmation_at, из логинов l1' – jarlh
Хм мой пример плох, Can not use MAX() Я исправлю его –