with recursive numbers(n) as (
select 1.0
union all
select n + 0.5
from numbers
where n < 10
)
select n
from numbers;
select *
from generate_series(
current_date,
current_date + interval '30 days',
interval '1 day'
);
create table events (
id integer,
predid integer,
postid integer,
descr varchar(50)
);
insert into events
select
id * 10,
(id - 1) * 10,
(id + 1) * 10,
'Event ' || id * 10
from generate_series(1, 10) id;
with recursive event_tree as (
select *
from events
where id = 10
union all
select events.*
from events
join event_tree on events.id = event_tree.postid
)
select *
from event_tree;
with recursive event_tree as (
select *
from events
where id = 100
union all
select events.*
from events
join event_tree on events.id = event_tree.predid
)
select *
from event_tree;
alter table users
add column level integer;
alter table users
add column manager_id integer;
update users
set level = 0, manager_id = null
where id = 1;
update users
set level = 1, manager_id = 1
where id in (2, 3);
update users
set level = 2, manager_id = 2
where id in (4, 5);
with recursive user_tree as (
select id, last_name, name, manager_id, level
from users
where manager_id is null
union all
select users.id, users.last_name, users.name,
users.manager_id, users.level
from users
join user_tree on users.manager_id = user_tree.id
)
select *
from user_tree;