Рекурсивные запросы в SQL

preview_player
Показать описание
Освой рекурсию в SQL и наслаждайся жизнью).

Рекомендации по теме
Комментарии
Автор

"Моё любимое действие в жизни - это селект"

MADAHAKO
Автор

Последнюю задачку можно решить без рекурсии (я применил лишь для генерации датасета)

with base as ( -- генерация данных
select 0 id, 1 month, 30 gas
union all
select id+1, month+1, case month+1
8 then 30
4 then 30*/ -- для проверки
50 end
from base
where id<11
)

select *, case when ROW_NUMBER() over(partition by mg order by month)%3 = 0 then 'Bonus' end Bonus
from (
select *, id - ROW_NUMBER() over(order by id) mg
from base
where gas >=50
) t

Alexpudow
Автор

Вы проводите индивидуальные занятия по postgresql?

gpankov
Автор

Глеб, можете запилить свой курс на какой-нибудь другой платформе, вроде Stepik? Udemy с РФ больше не работает.

thiothiosun
Автор

Пишу запросы в PostgreSQL и прихожу к выводу, что туториалы лучше писать на чистом SQL, не используя диалекты.

ВераНовикова-чю
Автор

Зачем переменная t ставится во втором селекте? Это имя таблицы? Поэтому во втором селекте пишется (t.имя столбца) из первого селекта?

ИванСемакин-гн
Автор

Кажется, если делать префикс рекурсивной таблички не стандартным t, а например r, то читать будет проще и понятнее

wimp
Автор

А как вывести иерархию сотрудников вместе с количеством подчиненных сотрудников? Т.е
Босс - 4 человека
Макс - 2 человека
Сотрудник 1
Сотрудник 2
Алекс - 2 человека
Сотрудник 3
Сотрудник 4

РоманСоловьев-юх