Advertisement
Vladek

Untitled

Apr 2nd, 2021
870
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Group
  2.  
  3. SELECT model, count FROM aircrafts,
  4. (SELECT COUNT(*) FROM seats GROUP BY aircraft_code ORDER BY COUNT(*) DESC LIMIT 1)
  5. AS bar
  6. WHERE aircraft_code = (SELECT aircraft_code FROM seats GROUP BY aircraft_code ORDER BY COUNT(*) DESC LIMIT 1)
  7.  
  8. Having
  9.  
  10. SELECT book_ref
  11. FROM tickets
  12. GROUP BY book_ref
  13. HAVING COUNT (*) >= 5
  14. ORDER BY book_ref
  15. LIMIT 3
  16.  
  17.  
  18. DISTINCT
  19.  
  20. SELECT COUNT (*)
  21. FROM (SELECT DISTINCT flight_no FROM flights_v WHERE arrival_airport_name = 'Домодедово'
  22.       AND date_part('day', (bookings.now() - actual_arrival)) < 7
  23.       GROUP BY flight_no) AS flight_no
  24.  
  25.  
  26. EXCEPT
  27.  
  28. SELECT arrival_city
  29. FROM   routes
  30. EXCEPT SELECT arrival_city
  31. FROM   routes
  32. WHERE  departure_city in ('Москва', 'Санкт-Петербург')
  33.  
  34.  
  35. Подзапросы
  36.  
  37. SELECT fl.flight_no,
  38.         fl.aircraft_code,
  39.         fl.capacity,
  40.         CASE WHEN tf.tickets_count is NULL THEN 0
  41.             ELSE tf.tickets_count
  42.         END
  43.  
  44. FROM (SELECT f.flight_id, f.flight_no, f.aircraft_code, s.count AS capacity
  45.      FROM flights AS f
  46.      JOIN (SELECT aircraft_code, count(*)
  47.             FROM seats
  48.             GROUP BY aircraft_code) AS s
  49.      ON    f.aircraft_code=s.aircraft_code
  50.      WHERE f.status='Departed') AS fl
  51.  
  52. LEFT JOIN (SELECT flight_id, count(*) AS tickets_count
  53.         FROM ticket_flights GROUP BY flight_id) AS tf
  54. ON fl.flight_id = tf.flight_id
  55.  
  56. WHERE ((tf.tickets_count * 1.0 / fl.capacity) * 100 <= 25
  57.         OR tf.tickets_count is NULL)
  58.     AND fl.capacity >= 30
  59.  
  60. ORDER BY fl.flight_no;
  61.  
  62.  
  63.  
  64.  
  65.  
  66. Оконные функции
  67.  
  68. SELECT res.aircraft_code,
  69.        res.actual_arrival,
  70.        sum(res.tickets_count)
  71.        OVER (PARTITION BY res.aircraft_code
  72.             ORDER BY res.actual_arrival)
  73.  
  74. FROM (SELECT f.flight_id,
  75.              f.status,
  76.              f.aircraft_code,
  77.              f.actual_arrival,
  78.              (CASE WHEN tf.count is NULL THEN 0
  79.                 ELSE tf.count
  80.               END) AS tickets_count
  81.      
  82.       FROM flights AS f
  83.      
  84.       LEFT JOIN (SELECT flight_id, count(*)
  85.             FROM ticket_flights
  86.             GROUP BY flight_id) AS tf
  87.       ON f.flight_id = tf.flight_id
  88.      
  89.       WHERE f.status='Arrived'
  90.         AND (f.aircraft_code='319'
  91.             OR f.aircraft_code='773')
  92.         AND f.actual_arrival >= (bookings.now() - interval '15 hours')
  93.         AND f.actual_arrival < (bookings.now() + interval '9 hours')
  94.      
  95.       ORDER BY f.aircraft_code, f.actual_arrival) AS res
  96.  
  97. ORDER BY res.aircraft_code, res.actual_arrival DESC;
  98.  
  99.  
  100. Общие табличные выражения (чит решение, но раз нет ревью :) )
  101.  
  102. with RECURSIVE route (arr) as
  103. (
  104.     values ('{IJK, SVO, VOG, CEK, SWT}'::text[])
  105.     union all
  106.     select arr from route where arr <@ '{IJK, SVO, CEK, SWT}'::text[]
  107. )
  108.  
  109. select * from route
  110.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement