Advertisement
korenizla

sql test

Jun 24th, 2025 (edited)
75
0
13 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 2.96 KB | None | 0 0
  1. -- Задание 1: Количество и сумма бронирований за январь 2025 года, стоимостью от 20 до 3000
  2. SELECT
  3.     COUNT(*) AS total_bookings,
  4.     SUM(amount_sell) AS total_amount
  5. FROM
  6.     Booking
  7. WHERE
  8.     created_date >= '2025-01-01' AND created_date < '2025-02-01'
  9.     AND amount_sell >= 20
  10.     AND amount_sell <= 3000;
  11.    
  12. -- Задание 2: Топ-99 партнёров по количеству бронирований, исключая города Paris и London
  13. SELECT
  14.     p.partner_name AS "Название партнёра",
  15.     COUNT(b.id) AS "Количество бронирований"
  16. FROM
  17.     Booking b
  18. JOIN
  19.     Partners p ON b.partner_id = p.id
  20. WHERE
  21.     p.partner_city_name NOT IN ('Paris', 'London')
  22. GROUP BY
  23.     p.id, p.partner_name
  24. ORDER BY
  25.     COUNT(b.id) DESC
  26. LIMIT 99;
  27.  
  28. -- Задание 3: Количество партнёров, которые сделали более 120 бронирований и содержат в названии 'тур' или 'трэвел'
  29. SELECT
  30.     COUNT(*) AS partners_count
  31. FROM (
  32.     SELECT
  33.         p.id
  34.     FROM
  35.         Booking b
  36.     JOIN
  37.         Partners p ON b.partner_id = p.id
  38.     WHERE
  39.         LOWER(p.partner_name) LIKE '%тур%'
  40.         OR LOWER(p.partner_name) LIKE '%трэвел%'
  41.     GROUP BY
  42.         p.id
  43.     HAVING
  44.         COUNT(b.id) > 120
  45. ) AS filtered_partners;
  46.  
  47. -- Задание 4: Партнёр(ы) из Москвы с наибольшим количеством бронирований с 01.01.2024 по 15.05.2025
  48. WITH partner_sales AS (
  49.     SELECT
  50.         p.id,
  51.         p.partner_name,
  52.         COUNT(b.id) AS total_sales
  53.     FROM
  54.         Booking b
  55.     JOIN
  56.         Partners p ON b.partner_id = p.id
  57.     WHERE
  58.         p.partner_city_name = 'Moscow'
  59.         AND b.created_date >= '2024-01-01'
  60.         AND b.created_date <= '2025-05-15'
  61.     GROUP BY
  62.         p.id, p.partner_name
  63. ),
  64. max_sales AS (
  65.     SELECT MAX(total_sales) AS max_count FROM partner_sales
  66. )
  67. SELECT
  68.     ps.partner_name
  69. FROM
  70.     partner_sales ps
  71. JOIN
  72.     max_sales ms ON ps.total_sales = ms.max_count;
  73.  
  74. -- Задание 5: Для каждого бронирования за 2024 год - название партнёра, ID бронирования, порядковый номер по дате и общее число бронирований партнёра
  75. SELECT
  76.     p.partner_name AS "Название партнёра",
  77.     b.id AS "Id бронирования",
  78.     ROW_NUMBER() OVER (
  79.         PARTITION BY p.id
  80.         ORDER BY b.created_date
  81.     ) AS "Порядковый номер бронирования по дате создания",
  82.     COUNT(*) OVER (
  83.         PARTITION BY p.id
  84.     ) AS "Всего бронирований за 2024 год"
  85. FROM
  86.     Booking b
  87. JOIN
  88.     Partners p ON b.partner_id = p.id
  89. WHERE
  90.     b.created_date >= '2024-01-01'
  91.     AND b.created_date < '2025-01-01';
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement