socialgraph

Untitled

Jan 7th, 2021 (edited)
282
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 2.20 KB | None | 0 0
  1. -- получаем таблицу из ticket_flights, flights и airports,
  2. -- подсасывая в ticket_flights информацию из flights (по flight_id)
  3. -- и из airports (по airport_code)
  4. -- причем берем только записи, в которых departure_time в некотором промежутке
  5. -- и city аэропорта это Москва
  6.  
  7. CREATE TABLE departures AS
  8.     SELECT
  9.        departure_time,
  10.        ticket_no
  11.     FROM
  12.         ticket_flights
  13.     INNER JOIN flights ON flights.flight_id = ticket_flights.flight_id
  14.     INNER JOIN airports ON airports.airport_code = flights.arrival_airport
  15.     WHERE
  16.          CAST(flights.departure_time AS date) BETWEEN '2018-07-23' AND '2018-09-30'
  17.          AND (airports.city = 'Москва');
  18.  
  19. -- агрегируем табличку departures по неделе, взятой из departure_time
  20. -- считаем количество билетов
  21.  
  22. CREATE TABLE A AS
  23.     SELECT
  24.         EXTRACT (week FROM departures.departure_time) AS departure_week,
  25.         COUNT(departures.ticket_no) AS tickets_amount
  26.     FROM
  27.         departures
  28.     GROUP BY
  29.          (week FROM departures.departure_time);
  30.  
  31. -- получаем из таблички festivals табличку с неделями проведения фестивалей
  32. -- и их названиями, оставляя только фестивали в заданный период и в Москве
  33.  
  34. CREATE TABLE B AS
  35.     SELECT
  36.             festival_name,
  37.             EXTRACT (week FROM festivals.festival_date) AS festival_week
  38.     FROM
  39.             festivals
  40.     WHERE
  41.         CAST(festivals.festival_date AS date) BETWEEN '2018-07-23' AND '2018-09-30'
  42.         AND (festival_city = 'Москва');
  43.        
  44. -- получаем из таблички festivals табличку с неделями проведения фестивалей
  45. -- и их названиями, оставляя только фестивали в заданный период и в Москве
  46.  
  47. SELECT
  48.     A.departure_week,
  49.     A.tickets_amount,
  50.     B.festival_week,
  51.     B.festival_name
  52. FROM
  53.     A
  54. LEFT JOIN
  55.     B
  56. ON
  57.     A.departure_week = B.festival_week;
Add Comment
Please, Sign In to add comment