Ana içeriğe geç
Kesit SQL
Temel · Bitirme Projeleri

Bitirme projesi (Temeller): Anadolu Market için ilk raporun

Tek tabloda seçme, filtreleme, sıralama, hesaplama, gruplama, CASE ve tarih fonksiyonlarıyla altı soruluk bir yönetici raporu.

Uygulamada aç, 8 alıştırmayı çözÜcretsiz, hesap gerekmez, kurulum yok.

Bu sayfa dersin okuma sürümüdür. Metin bir kutuyu çalıştırmanı ya da adıma geçmeni söylüyorsa dersi uygulamada aç.

Senaryo

Anadolu Market'in satış müdürü, yıl sonu toplantısı öncesinde senden kısa bir rapor istiyor. Henüz tabloları birleştirmeyi bilmen gerekmiyor: her soru tek bir tabloyla çözülür. Bu projede şimdiye kadar öğrendiklerini bir arada kullanacaksın.

SoruKullanacağın konular
1. Kanal performansıWHERE ile tarih aralığı, GROUP BY, ORDER BY
2. Elektronik kâr marjıHesaplanan sütun, ROUND, sıralama
3. Kalabalık şehirlerGROUP BY, HAVING
4. Yaş gruplarıCASE, GROUP BY
5. E-posta sağlayıcılarıLIKE, koşullu sayım
6. Stok uyarısıÇoklu koşul, NULL, sıralama ve ilk N satır

Kullanacağın tablolar

Çalışma önerisiHer soruda önce SELECT * ile ilgili satırlara bak, sonra sütunları ve koşulları ekle. Sonucu yorumlamayı da unutma: hangi kanal öne çıkıyor, hangi ürün en az kâr bırakıyor?

Derinleş: işi baştan sona yapmak

Brif: Satış müdürü“Perşembe yıl sonu toplantısı var. Hangi kanala, hangi kategoriye yatırım yapacağımıza karar vereceğiz. Bana tek sayfa yeter: altı sorunun sonucu, her birinin altında bir cümle yorum.”

Çalışma planı

  1. Veriyi tanı. Soruya başlamadan önce tablonun kaç satır olduğunu, tarih aralığını ve boş değerleri gör. Aşağıdaki sorgu orders için bunu tek satırda verir: 910 sipariş, 2022-06-22 ile 2024-12-31 arası.
  2. Varsayımlarını yaz. Örneğin “2024 = 1 Ocak dahil, 1 Ocak 2025 hariç”, “iptal edilen siparişler de sayılıyor”. Müdür aynı sayıyı başka biçimde hesaplarsa farkın nedenini bu notlar açıklar.
  3. Soruyu böl. “Kanal performansı” aslında iki sorudur: kaç sipariş geldi, kaçı iptal oldu? Önce sayıyı, sonra oranı hesapla.
SELECT COUNT(*) AS satir, MIN(order_date) AS ilk_tarih, MAX(order_date) AS son_tarih,
       SUM(CASE WHEN channel IS NULL THEN 1 ELSE 0 END) AS kanal_bos,
       COUNT(DISTINCT status) AS durum_cesidi
FROM orders;

Kontrol listesi

Teslim

Her soru için küçük bir tablo; kanal karşılaştırmasına sütun grafik yeter. En üste üç cümle:

Yönetici özeti örneği2024'te 537 sipariş alındı; mobil (235) ve web (224) siparişlerin %85'inden fazlasını getiriyor. Web'de iptal oranı %11,2 ile mağazanın (%3,8) yaklaşık üç katı; ödeme ve teslimat adımları incelenmeli. Elektronikte en düşük marj Powerbank'ta (%31,9); fiyatı ya da tedarikçisi gözden geçirilmeli.

Kendini değerlendir

ÖlçütBaşlangıçİyiMükemmel
DoğrulukSorgular çalışıyorTarih aralığı ve NULL doğru ele alınmışVarsayımlar yazılı, eşitlik bozucu sıralama var
DoğrulamaKontrol yokToplamlar karşılaştırılmışHer oranın paydası açıkça belirtilmiş
SunumHam sonuç tablolarıHer tabloya bir cümle yorumKarara bağlanan üç cümlelik özet

Aşağıdaki ek görevler, raporu “sayım”dan “karar”a taşıyan iki soru ekliyor.

Alıştırmalara geç (8)