task:
Создать следующие виды запросов к базе:

Запрос с использованием автономных подзапросов
Создание запроса с использованием коррелированных подзапросов в предложении SELECT и WHERE
Запрос с использованием временных таблиц
Запрос с использованием обобщенных табличных выражений (CTE).
Слияние данных (INSERT, UPDATE) c помощью инструкции MERGE.
Запрос с использованием оператора PIVOT.
Запрос с использованием оператора UNPIVOT.
Запрос с использованием GROUP BY с операторами ROLLUP, CUBE и GROUPING SETS.
Секционирование с использованием OFFSET FETCH.
Запросы с использованием ранжирующих оконных функций. ROW_NUMBER() нумерация строк. Использовать для нумерации внутри групп. RANK(), DENSE_RANK(), NTILE().
Реализовать обработчик ошибок в коде используя TRY/CATCH. Добавить в область блока CATCH возможность получения сведений об ошибке с использованием функций ERROR, приведшей к выполнению данного блока.
Использование THROW, чтобы передать сообщение об ошибке клиенту.
Контроль транзакций с BEGIN и COMMIT
Использование XACT_ABORT
Добавление логики обработки транзакций в блоке CATCH.

code that creating my database:
drop table if exists
    visas,
    orders,
    employees,
    offices,
    booking,
    rooms,
    clients,
    hotels,
    tours,
    classes


create table clients
(
    client_id    int identity
        primary key not null,
    first_name   nvarchar(255),
    middle_name  nvarchar(255),
    last_name    nvarchar(255),
    email        nvarchar(255),
    phone_number nvarchar(11),
    zagran       nvarchar(10)
)


create table classes
(
    class_id   int identity
        primary key,
    class_name nvarchar(255)
)

create table offices
(
    office_id       int identity
        primary key,
    office_location nvarchar(255),
    orders_quantity int
)

create table employees
(
    employee_id  int identity
        primary key,
    office_id    int
        foreign key references offices on delete cascade,
    first_name   nvarchar(255),
    middle_name  nvarchar(255),
    last_name    nvarchar(255),
    email        nvarchar(255),
    phone_number nvarchar(11),
    employment_date date,
    salary       money,
    bonus money
)

create table tours
(
    tour_id       int identity
        primary key,
    tour_location nvarchar(255),
    price         money,
    tour_status   nvarchar(255),
    sale          float
)

create table hotels
(
    hotel_id   int identity
        primary key,
    hotel_name nvarchar(50),
    stars      int,
    tour_id    int
        foreign key references tours on delete set null
)

create table rooms
(
    room_id  int identity
        primary key,
    capacity int,
    class_id int
        foreign key references classes on delete set null ,
    hotel_id int
        foreign key references hotels on delete cascade,
    price    money
)

create table booking
(
    booking_id int identity
        primary key,
    room_id   int
        foreign key references rooms on delete cascade,
    arrival   datetime,
    departure datetime
)

create table orders
(
    order_id    int identity
        primary key,
    client_id   int
        foreign key references clients on delete set null,
    tour_id     int
        foreign key references tours on delete set null,
    booking_id  int
        foreign key references booking on delete set null,
    employee_id int
        foreign key references employees on delete set null,
    order_date date
)

create table visas
(
    visa_name    nvarchar(50),
    expires_date date,
    client_id    int
        foreign key references clients(client_id) on delete cascade
)





use tourist_agency;


insert into clients (first_name, middle_name, last_name, email, phone_number, zagran)
values ('Никита', 'Кириллович', 'Михайлов', 'nikita@ya.ru', '88005535353', '1ABCD'),
       ('Влад', 'Кириллович', 'Крошкин', 'rikiki22ta@ya.ru', '88024153532', '1EMP'),
       ('Евгений', 'Никитович', 'Лошков', 'elozhka@ya.ru', '89567887665', '2ABCD'),
       ('Дмитрий', 'Михайлович', 'Вилкин', 'evilka@ya.ru', '89567123665', '3FGHD'),
       ('Дмитрий', 'Александрович', 'Мишкин', 'emilka@ya.ru', '89567123665', '3FCHD'),
       ('Дмитрий', 'Дмитриевич', 'Шапков', 'eshapka@gmail.ru', '89567123665', '3FBHD'),
       ('Алексей', 'Игнатович', 'Горелкин', 'ksksks@ya.ru', '89569987665', '4HBCD'),
       ('Владимир', 'Алексеевич', 'Ножков', 'lmaoman@ya.ru', '89567887689', '5LBCD'),
        ('Чел', 'Челович', 'Волшебник', 'magic_man', '12345678910', '3AAA');

insert tours (tour_location, price, tour_status, sale)
values ('Turkey', 150000, 'sale_off', 0.25),
       ('Kazakhstan', 170000, 'sale_on', 0.15),
       ('Britain', 300000, 'sale_off', 0.25),
       ('USA', 350000, 'sale_off', 0.75),
       ('Canada', 400000, 'sale_on', 0.05),
       ('Germany', 210000, 'sale_off', 0.1),
       ('Turkey', 200000, 'sale_off', 0.25),
       ('Turkey', 300000, 'sale_off', 0.0),
       ('Turkey', 400000, 'sale_off', 0.25)

insert offices (office_location, orders_quantity)
values ('Moscow', 25),
       ('Saratov', 3),
       ('Voronezh', 50),
       ('Samara', 100),
       ('Kazan', 70),
       ('Nigeria', 0),
       ('Tokyo', 0)

insert employees (office_id, first_name, middle_name, last_name, email, phone_number, employment_date, salary, bonus)
values (1, 'Влад', 'Кириллович', 'Крошкин', 'rikiki22ta@ya.ru', '88024153532', '2020-10-10', 25000, 0),
        (5, 'Евгений', 'Никитович', 'Маркин', 'elo121zhka@ya.ru', '89562387665', '2020-10-20', 30000, 0),
        (2, 'Антон', 'Михайлович', 'Шелковичкин', 'evil212ka@ya.ru', '89512323665', '2020-10-30', 45000, 0),
        (2, 'Ахмед', 'Михайлович', 'Шелковичкин', 'nitonito212ka@ya.ru', '89512323668', '2020-10-30', 35000, 0),
        (3, 'Никита', 'Игнатович', 'Тушилкин', 'ksks212ks@ya.ru', '89569567665', '2021-11-10', 40000, 0),
        (4, 'Владимир', 'Витальевич', 'Палкин', 'lmaoma21n@ya.ru', '8922345689', '2021-11-20', 20000, 0),
        (4, 'Игнат', 'Витальевич', 'Палкин', 'lmaoma22n@ya.ru', '8922345688', '2022-12-31', 25000, 0)


insert visas (visa_name, expires_date, client_id)
values ('Green card', '2023-11-23', 1),
       ('Red card', '2023-12-23', 2),
       ('Green card', '2024-11-30', 3),
       ('Green card', '2024-11-11', 4),
       ('Brown card', '2027-12-23', 5)

insert hotels (hotel_name, stars, tour_id)
values ('Grand Michelle', 4, 1),
       ('Almaty', 5, 2),
       ('Great Elizabeth', 3, 3),
       ('Grand Canyon of Death', 2, 4),
       ('MegaMega', 5, 5),
       ('Duchen Bruhen', 4, 6),
       ('Grand Heineken', 4, 7),
       ('Grand Stella Artoes', 4, 8),
       ('Grand Europe', 4, 9)

insert classes (class_name)
values ('Luxury'), ('Premium'), ('Budget'), ('Mid-segment'), ('Love story'), ('You`re funny but ok :)')

insert rooms (capacity, class_id, hotel_id, price)
values (2, 1, 1, 2500),
       (1, 2, 2, 3000),
       (1, 2, 2, 3000),
       (1, 3, 2, 3000),
       (1, 2, 2, 3000),
       (3, 3, 3, 1500),
       (4, 2, 3, 4500),
       (2, 4, 4, 5000),
       (1, 5, 5, 1000),
       (3, 6, 6, 3000),
       (2, 6, 6, 3000),
       (1, 6, 6, 7000),
       (4, 6, 6, 3000),
       (5, 2, 6, 6000),
       (3, 1, 6, 5000),
       (3, 4, 6, 4000),
       (3, 5, 6, 2000),
       (2, 6, 6, 11000),
       (3, 6, 7, 20000),
       (4, 4, 8, 30000),
       (3, 5, 9, 40000)

insert booking (room_id, arrival, departure)
    values (1,      '20231011 10:00', '20231015 10:00'),
           (20,         '20231012 10:00', '20231014 10:00'),
           (1,      '20231015 10:00', '20231018 10:00'),
           (6,          '20231111 10:00', '20231115 10:00'),
           (8,      '20231211 10:00', '20231215 10:00'),
           (9,          '20231211 10:00', '20231215 10:00'),
           (10,     '20221216 10:00', '20221217 10:00'),
           (19,         '20230316 10:00', '20230320 10:00'),
           (20,     '20231016 10:00', '20231017 10:00'),
           (1,          '20221216 10:00', '20221219 10:00'),
           (19,     '20230316 10:00', '20230320 10:00'),
           (21,         '20231016 10:00', '20231017 10:00'),
        (21,         '20171016 10:00', '20171017 10:00')

insert orders (client_id, tour_id, booking_id, employee_id, order_date)
values (2,  1, 1, 1, '2023-09-10'),
       (3,  8, 2, 2,    '2023-09-11'),
       (3,  1, 3, 3, '2023-08-11'),
       (4,  3, 4, 4,    '2023-09-23'),
       (5,  4, 5, 5, '2023-10-23'),
       (1,  5, 6, 6,    '2023-07-15'),
       (2,  6, 7, 1, '2022-10-25'),
       (5,  7, 8, 1,    '2023-01-02'),
       (1,  8, 9, 1, '2023-08-22'),
    (2,  1, 10, 1,      '2022-04-11'),
    (3,  7, 11, 1,   '2022-12-21'),
    (3,  9, 12, 1,      '2023-07-17'),
    (3,  9, 13, 1,      '2015-03-17')






please do the task, ill give u a tip