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ı

ŞablonNe zaman kullanılır?İskelet
Filtreli listeBelirli dönem ve duruma ait kayıtları görmekSELECT {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 toplamAy ay tutar veya adet izlemekSELECT {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ı toplamHangi 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 listesiSELECT {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ştirmeSipariş satırına müşteri adını eklemekSELECT 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ıtlarHiç sipariş vermemiş müşterileri bulmakSELECT 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.

AlanDoldurulacak içerikÖrnek (kurgusal)
Talep edenAd, birim, tarihSatış ekibi, 1 Ekim
AmaçRapor hangi karar için kullanılacak?Kampanya bütçesine karar vermek
İstenen metriklerAdet, tutar, oran; tanımıylaİptal hariç net sipariş tutarı
KırılımAy, kategori, bölge, ürünKategori bazında
DönemBaşlangıç ve bitiş tarihi1 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 özetiExcel + 3 cümlelik özet
Teslim tarihiNe 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ıkRaporun adı, tek satır
DönemBaşlangıç - bitiş tarihi
KaynakVeritabanı, tablolar, çalıştırma tarihi
Tanım notlarıMetrik tanımları, hariç tutulanlar
Özet bulgularEn fazla üç madde, sade cümlelerle
Ayrıntı tablosuSorgu çı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