sql

sql

Denis

-- Здесь можно сделать что-нибудь до начала теста

-- CREATE INDEX idx1 ON Commander(name);


-------- Запрос, нуждающийся в оптимизации

--

-- Запрос будет получать параметры commander_name и pax_count

-- Названия и типы возвращаемых столбцов:

-- TABLE(flight_id INT, commander_name TEXT, pax_count INT)


SELECT id AS flight_id, name AS commander_name, pax_count FROM (

    SELECT F.id, C.name

    FROM Commander C

    JOIN Flight F ON F.commander_id=C.id

    WHERE F.date BETWEEN '2084-04-01' AND '2084-05-01'

    AND C.name = _commander_name

) R

JOIN (

    SELECT F.id, COUNT(P.id)::INT AS pax_count

    FROM Flight F

    JOIN Booking B ON B.flight_id = F.id

    JOIN Pax P ON B.pax_id=P.id

    WHERE P.race='Men'

    GROUP BY F.id

) T USING(id) WHERE T.pax_count>_pax_count;



Report Page