| | 66 | |
| | 67 | Идеја: еднаш да агрегираме booking по flight_id (COUNT и AVG), па потоа само join-ираме. |
| | 68 | |
| | 69 | {{{ |
| | 70 | SELECT |
| | 71 | f.flight_id, |
| | 72 | al.airlinename, |
| | 73 | f.flightno, |
| | 74 | f.`from`, |
| | 75 | f.`to`, |
| | 76 | f.departure, |
| | 77 | f.arrival, |
| | 78 | a.capacity, |
| | 79 | bx.booked_seats, |
| | 80 | bx.avg_price, |
| | 81 | bx.booked_seats / a.capacity AS load_factor |
| | 82 | FROM flight f |
| | 83 | JOIN airline al ON al.airline_id = f.airline_id |
| | 84 | JOIN airplane a ON a.airplane_id = f.airplane_id |
| | 85 | JOIN ( |
| | 86 | SELECT |
| | 87 | b.flight_id, |
| | 88 | COUNT(*) AS booked_seats, |
| | 89 | AVG(b.price) AS avg_price |
| | 90 | FROM booking b |
| | 91 | GROUP BY b.flight_id |
| | 92 | ) bx ON bx.flight_id = f.flight_id |
| | 93 | WHERE f.departure >= CURDATE() |
| | 94 | AND f.departure < DATE_ADD(CURDATE(), INTERVAL 1 DAY) |
| | 95 | AND bx.booked_seats > 0 |
| | 96 | ORDER BY load_factor DESC |
| | 97 | LIMIT 100; |
| | 98 | }}} |