SQL Rapor Araç Kiti: Hazır Sorgu Şablonları, Kontrol Listeleri ve Veri Talebi Formu
Bu ders bir okuma dersi değil, bir çalışma masası dersi. Aşağıdaki şablonları, listeleri ve formu kopyalayın; kendi tablo ve sütun adlarınıza göre uyarlayın. Süslü parantez içindeki yerler ({tablo}, {sutun} gibi) sizin dolduracağınız alanlardır. Örneklerde sipariş, müşteri ve ürün tabloları olan basit bir satış veritabanı varsayılmıştır.
1. Hazır Sorgu Şablonları
| Şablon | Ne zaman kullanılır? | İskelet |
|---|---|---|
| Filtreli liste | Belirli dönem ve duruma ait kayıtları görmek | SELECT {sutun1}, {sutun2} FROM {tablo} WHERE {tarih_sutunu} >= '{baslangic}' AND {tarih_sutunu} < '{bitis_ertesi_gun}' AND {durum_sutunu} <> 'iptal' ORDER BY {tarih_sutunu} DESC LIMIT 100; |
| Aylık toplam | Ay ay tutar veya adet izlemek | SELECT {ay_ifadesi} AS ay, COUNT(*) AS siparis_adedi, SUM({tutar_sutunu}) AS toplam_tutar FROM {tablo} WHERE {durum_sutunu} <> 'iptal' GROUP BY {ay_ifadesi} ORDER BY ay; |
| Kategori bazlı toplam | Hangi kategori ne kadar getirmiş? | SELECT {kategori_sutunu}, SUM({tutar_sutunu}) AS toplam_tutar FROM {tablo} GROUP BY {kategori_sutunu} ORDER BY toplam_tutar DESC; |
| En çok satanlar | İlk 10 ürün veya müşteri listesi | SELECT {urun_adi}, SUM({adet_sutunu}) AS toplam_adet FROM {kalem_tablosu} GROUP BY {urun_adi} ORDER BY toplam_adet DESC LIMIT 10; |
| İki tabloyu birleştirme | Sipariş satırına müşteri adını eklemek | SELECT s.{siparis_no}, m.{musteri_adi}, s.{tutar_sutunu} FROM {siparis_tablosu} s INNER JOIN {musteri_tablosu} m ON s.{musteri_id} = m.{id}; |
| Eşleşmeyen kayıtlar | Hiç sipariş vermemiş müşterileri bulmak | SELECT m.{id}, m.{musteri_adi} FROM {musteri_tablosu} m LEFT JOIN {siparis_tablosu} s ON s.{musteri_id} = m.{id} WHERE s.{id} IS NULL; |
Ay ifadesi veritabanına göre değişir
Aylık gruplamadaki {ay_ifadesi} yeri, kullandığınız sisteme göre farklı yazılır. Kendi sisteminizinkini bir kez bulup şablon dosyanızın başına not edin.
- PostgreSQL: DATE_TRUNC('month', {tarih_sutunu})
- MySQL: DATE_FORMAT({tarih_sutunu}, '%Y-%m')
- SQLite: strftime('%Y-%m', {tarih_sutunu})
Şablonları uyarlarken üç hatırlatma
- Bitiş tarihinde "bitişten sonraki gün" ve küçüktür kullanın; böylece bitiş gününün saatli kayıtları dışarıda kalmaz.
- JOIN sonrası satır sayısı beklenenden fazlaysa birleştirme anahtarı tekrarlıyor olabilir.
- Eşleşmeyen kayıt sorgusunda IS NULL kontrolünü sağ tablonun kimlik sütununa yapın.
2. İki Kontrol Listesi
A) Sorgu yazmadan önce
- Soru tek cümleyle yazılabiliyor mu? (Örnek: "Eylül ayında kategori bazında iptal edilmemiş sipariş tutarı nedir?")
- Hangi tablolar gerekli ve aralarındaki bağlantı sütunu hangisi?
- Tarih aralığı net mi, başlangıç ve bitiş dahil mi?
- Hariç tutulacak kayıtlar tanımlı mı? (iptal, iade, test, silinmiş)
- "Tutar" KDV dahil mi, hariç mi; "müşteri" tekil kişi mi, sipariş mi?
B) Rapor paylaşmadan önce
- Satır sayısı beklentinize yakın mı? Değilse JOIN ve filtreleri tek tek gözden geçirin.
- Toplamlar başka bir kaynakla (muhasebe özeti, mevcut bir panel, elle sayılmış küçük bir örnek) tutuyor mu?
- NULL ve boş değerler nasıl ele alındı?
- Aynı kayıt iki kez sayılmış olabilir mi?
- Sütun başlıkları iş birimi için anlaşılır mı? (AS ile okunur isim verin)
- Kaynak, dönem ve çalıştırma tarihi rapora yazıldı mı?
3. Veri Talebi Formu
İş birimlerinden gelen "şu rakamı çıkarır mısın?" mesajlarını bu forma yönlendirin. Eksik bilgiyle yazılan sorgu genellikle ikinci tura kalır.
| Alan | Doldurulacak içerik | Örnek (kurgusal) |
|---|---|---|
| Talep eden | Ad, birim, tarih | Satış ekibi, 1 Ekim |
| Amaç | Rapor hangi karar için kullanılacak? | Kampanya bütçesine karar vermek |
| İstenen metrikler | Adet, tutar, oran; tanımıyla | İptal hariç net sipariş tutarı |
| Kırılım | Ay, kategori, bölge, ürün | Kategori bazında |
| Dönem | Başlangıç ve bitiş tarihi | 1 Eylül - 30 Eylül |
| Hariç tutulacaklar | İptal, iade, test kayıtları | İptal ve test siparişleri |
| Tazelik ihtiyacı | Tek seferlik mi, düzenli mi? | Her ayın ilk iş günü |
| Çıktı formatı | Tablo, Excel dosyası, e-posta özeti | Excel + 3 cümlelik özet |
| Teslim tarihi | Ne zamana kadar? | Cuma 17:00 |
4. Sunum Cümle Kalıpları ve Rapor Sayfası
Hazır cümle kalıpları
- Dönem ve kaynak: "Bu rakamlar {dönem} için, {sistem adı} verisinden {tarih} tarihinde alınmıştır."
- Bulgu: "{Kategori}, toplam içinde en yüksek paya sahip; {ikinci kategori} onu izliyor."
- Tanım notu: "Tutarlar iptal edilen siparişler hariç, KDV dahildir."
- Sınır: "Bu analiz yalnızca kayıtlı siparişleri kapsar; mağaza satışları dahil değildir."
- Doğrulama: "Toplam, {kaynak} ile karşılaştırıldı ve tutuyor." Tutmuyorsa: "{kaynak} ile fark var; nedeni inceleniyor."
- Öneri: "Bu bulguya göre {eylem} değerlendirilebilir; kesin karar için {ek veri} gerekir."
Rapor sayfası düzeni
| Bölüm | İçerik |
|---|---|
| Başlık | Raporun adı, tek satır |
| Dönem | Başlangıç - bitiş tarihi |
| Kaynak | Veritabanı, tablolar, çalıştırma tarihi |
| Tanım notları | Metrik tanımları, hariç tutulanlar |
| Özet bulgular | En fazla üç madde, sade cümlelerle |
| Ayrıntı tablosu | Sorgu çıktısı, okunur başlıklarla |
5. Sorgu Kütüphanesi: Belgeleme ve Adlandırma
Her sorgu dosyasının başına şu yorum bloğunu koyun: Amaç, Hazırlayan, Tarih, Kaynak tablolar, Hariç tutulanlar, Sürüm notu. Yorum satırı iki tire ile başlar.
Dosya adı düzeni önerisi: konu_kırılım_sürüm.sql. Örneğin satis_aylik_kategori_v1.sql veya musteri_siparissiz_v2.sql. Türkçe karakter ve boşluk kullanmamak dosyaların farklı sistemlerde sorunsuz açılmasını sağlar.
- Ortak klasörde üç alt klasör açın: sablonlar, raporlar, arsiv.
- Çalışan sorguyu sablonlar klasörüne, değişen kısımları işaretleyerek kaydedin.
- Rapor için kullandığınız sorgunun bir kopyasını dönemle birlikte raporlar klasörüne koyun.
- Sürüm değiştikçe eskisini silmeyin, arsive taşıyın.
Bugünkü ödeviniz: Bu dersteki altı şablondan işinize en yakın olanı seçin, kendi tablolarınıza uyarlayın, yorum bloğunu ekleyin ve kütüphanenizin ilk dosyası olarak kaydedin.
Bu dersi kayıt olmadan izleyebilirsin. İlerlemeni kaydetmek, sertifika almak ve puan tablosuna girmek için ücretsiz üye ol: Kayıt Ol