Bir havayolunun temel sayıları
Yönetim her sabah birkaç soruya cevap ister: Kaç uçuş yapıldı, kaçı iptal oldu, kaç yolcu taşındı, ortalama bilet fiyatı ne? Bunların hepsi toplama fonksiyonları ve GROUP BY ile yanıtlanır.
SELECT status, COUNT(*) AS ucus, SUM(pax) AS yolcu FROM hv_flights GROUP BY status;
COUNT(*) ile COUNT(sütun) farkı burada çok işe yarar
SELECT COUNT(*) AS planlanan,
COUNT(actual_dep) AS kalkan,
COUNT(actual_arr) AS inen
FROM hv_flights;
İptal edilen uçuşun actual_dep değeri, yön değiştiren (diverted) uçuşun actual_arr değeri NULL'dır. COUNT(sütun) NULL'ları saymadığı için üç sayı farklı çıkar.
Koşullu sayım
SELECT tier,
COUNT(*) AS uye,
SUM(CASE WHEN email IS NULL THEN 1 ELSE 0 END) AS epostasiz
FROM hv_passengers
GROUP BY tier;
WHERE status <> 'cancelled' ekle.Derinleş: Operasyon karnesi: iptal oranı ve zamanında kalkış
Bir havayolunun günlük operasyon raporunda iki oran mutlaka bulunur: iptal oranı (iptal ÷ planlanan uçuş) ve zamanında kalkış oranı (OTP, on-time performance). Sektörde yaygın tanım, planlanandan en fazla 15 dakika geç kalkan uçuşu zamanında saymaktır. Varış için de aynı eşik kullanılır.
Payda kimdir?
İptal edilen uçuş hiç kalkmadığı için “zamanında mı?” sorusu ona sorulamaz. OTP'nin paydası kalkan uçuşlardır, yani COUNT(actual_dep). COUNT(*) kullanırsan iptaller “geç kalkmış” gibi sayılır ve oran düşer:
SELECT COUNT(*) AS planlanan,
COUNT(actual_dep) AS kalkan,
SUM(CASE WHEN ROUND((julianday(actual_dep) - julianday(sched_dep)) * 1440) <= 15 THEN 1 ELSE 0 END) AS zamaninda,
ROUND(100.0 * SUM(CASE WHEN ROUND((julianday(actual_dep) - julianday(sched_dep)) * 1440) <= 15 THEN 1 ELSE 0 END)
/ COUNT(actual_dep), 1) AS otp,
ROUND(100.0 * SUM(CASE WHEN ROUND((julianday(actual_dep) - julianday(sched_dep)) * 1440) <= 15 THEN 1 ELSE 0 END)
/ COUNT(*), 1) AS yanlis_payda
FROM hv_flights;
Doğru OTP %62,1, yanlış paydayla %60,9. Fark küçük görünür ama iptal oranının yükseldiği bir ayda büyür. Daha önemlisi, iptal ve gecikme iki ayrı sorundur ve ayrı raporlanmalıdır. NULL bir actual_dep karşılaştırmada ne doğru ne yanlış (UNKNOWN) sonuç verir; CASE bu yüzden onu 0 sayar ve pay doğru kalır.
Ortalama gecikme yanıltır
Gecikme dağılımı çok çarpıktır: uçuşların çoğu zamanında, birkaçı saatlerce geç kalkar. “Ortalama gecikme 25 dakika” cümlesi, yolcuların çoğunun 25 dakika beklediği izlenimini verir; oysa böyle değildir. Yönetim raporunda oran (OTP), uzun gecikme sayısı (ör. 60+ dk) ve gerekirse medyan birlikte verilir.
| Metrik | Pay | Payda |
|---|---|---|
| İptal oranı | status = 'cancelled' | Tüm planlanan uçuşlar |
| Zamanında kalkış | Kalkış gecikmesi ≤ 15 dk | Kalkan uçuşlar (actual_dep dolu) |
| Zamanında varış | Varış gecikmesi ≤ 15 dk | İnen uçuşlar (actual_arr dolu; diverted hariç) |
| Uçuş başına yolcu | SUM(pax) | İptal edilmeyen uçuşlar |
Aylık kırılım, tek sayının gizlediği trendi ortaya çıkarır. Kanat'ta OTP Eylül'de %70 civarındayken Aralık'ta %49'a düşüyor. Kış havası, yoğun bayram ve yılbaşı trafiği akla gelen ilk açıklamalardır. Bunu rötar nedenleri tablosuyla doğrulamak bir sonraki adımdır.