Загрузка данных


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;