WY · BÖLÜM 07 · FÖY 135
YAZ-135 · Yazılım & Teknik · ~2-3 dk

Doğal dille anlat, çalışan SQL sorgusunu al

Kendi tablo yapına oturan, çalıştırmaya hazır bir SQL sorgusu ve ne yaptığının satır satır açıklaması.

Kanca

Ne çekmek istediğini biliyorsun ama kafanda JOIN'leri ve GROUP BY'ı kurup çalışan sorguya çevirmek her seferinde akışını kesiyor. Basit bir "şu tablodan şunu istiyorum" cümlesi, sözdizimini hatırlamaya çalışırken on dakikaya yayılıyor.

Hamle — Claude / ChatGPT (ikisi de çalışır)
Prompt — kopyala & yapıştır
Sen deneyimli bir SQL yardımcısısın. Görevin: aşağıda doğal dille anlattığım veri ihtiyacını çalışan tek bir SQL sorgusuna çevirmek ve sorgunun ne yaptığını sade Türkçeyle açıklamak.

Kurallar:
- Sadece benim verdiğim tablo ve kolon adlarını kullan. Var olmayan tablo, kolon veya ilişki UYDURMA.
- Şema, tablolar arası bağlantı ya da isteğim bir yerde belirsizse tahmin yürütme; "EKSİK:" yazıp tam olarak neye ihtiyacın olduğunu maddele (hangi tablo, hangi kolon, hangi bağlantı).
- Önce sorguyu ver. Sonra 3-5 satırda açıkla: hangi tablolar hangi kolondan birleşiyor, neye göre gruplanıyor, neye göre filtreleniyor, nasıl sıralanıyor.
- Birden fazla makul yorum varsa en olasısını seç ama yaptığın varsayımı tek satırla belirt.
- Sorguyu belirgin yavaşlatacak bir şey görürsen (ör. büyük tabloda indekssiz filtre) tek cümleyle uyar.

Kullandığım veritabanı: [PostgreSQL / MySQL / SQL Server / BigQuery — birini yaz]

Tablo yapısı (her tablo için: ad + kolonlar + tür; varsa tablolar arası ilişki):
[buraya yapıştır]

İstediğim (doğal dille, serbest cümle):
[buraya yaz — ör: her müşterinin son 30 gündeki toplam sipariş tutarını, en çok harcayandan aza doğru istiyorum]
Çıktı

Kendi tablo yapına oturan, çalıştırmaya hazır bir SQL sorgusu ve ne yaptığının satır satır açıklaması. Kopyalar, kendi ortamında küçük bir örnekte çalıştırır, ince ayarı sen yaparsın. Genelde 2-3 dakika.

Kariyer çentiği

Her veri isteği için birine "şu sorguyu yazar mısın" diye gitmeyi bırakır, ekipte veriye kendi ulaşan ve hızlı dönen kişi olarak görünürsün.

Sınır

Araç senin veritabanını görmediği için sorgunun mantığı sana ait — önce küçük bir örnekte doğrula, üretimde körlemesine çalıştırma; gerçek şema ve kolon adlarını kurumsal onayı olmayan araca yapıştırmamaya da dikkat et.

Örnek — bu prompt ne üretir?
Örnek girdi
Veritabanı: PostgreSQL

Tablolar:
musteriler — musteri_id (int, PK), ad_soyad (text), sehir (text), kayit_tarihi (date)
siparisler — siparis_id (int, PK), musteri_id (int, musteriler.musteri_id'ye bağlı), siparis_tarihi (timestamp), tutar (numeric), durum (text: 'beklemede' | 'tamamlandi' | 'iptal')

Ne istiyorum:
her müşterinin son 30 gündeki toplam harcamasını görmek istiyorum, en çok harcayandan en aza doğru sıralı olsun. sadece tamamlanan siparişler sayılsın, iptal ve beklemede olanlar hariç. müşteri adını da yanında göster.
Çıktı

```sql

SELECT

m.musteri_id,

m.ad_soyad,

SUM(s.tutar) AS toplam_harcama

FROM musteriler m

JOIN siparisler s ON s.musteri_id = m.musteri_id

WHERE s.durum = 'tamamlandi'

AND s.siparis_tarihi >= CURRENT_DATE - INTERVAL '30 days'

GROUP BY m.musteri_id, m.ad_soyad

ORDER BY toplam_harcama DESC;

```

Ne yapıyor

  • musteriler ve siparisler tablolarını musteri_id kolonundan birleştiriyor (JOIN).
  • Yalnızca durum = 'tamamlandi' olan ve siparis_tarihi son 30 gün içinde kalan satırları alıyor (WHERE) — iptal ve beklemede olanlar dışarıda.
  • Her müşteri için (musteri_id, ad_soyad) tutar değerlerini topluyor (GROUP BY + SUM).
  • Sonucu en çok harcayandan en aza doğru sıralıyor (ORDER BY ... DESC).

Varsayım: "Son 30 gün"ü, sorgunun çalıştığı günden geriye 30 gün olarak aldım. Sabit bir tarih aralığı (ör. bir ayın tamamı) istiyorsan CURRENT_DATE - INTERVAL '30 days' yerine kendi başlangıç–bitiş tarihini yaz.

Not: JOIN olduğu için son 30 günde tamamlanmış siparişi olmayan müşteri listede çıkmaz; sıfır harcayanları da görmek istersen LEFT JOIN + COALESCE(SUM(s.tutar), 0) kullan.

Performans: siparisler büyük bir tabloysa ve siparis_tarihi ile durum kolonlarında indeks yoksa bu filtre tüm tabloyu tarar; bu iki kolona indeks eklemek sorguyu belirgin hızlandırır.

ÜRETİM: TEM 2026 · CLAUDE Bu kayıt eşlenmiş örnek girdi ve çıktı içerir. Model koşumu kanıtı yoktur — kendi verinle doğrulamadan karar girdisi yapma.

Kendi verinle çalıştır
Verini aşağıya yapıştır; prompt seninkiyle birleşip çalıştırmaya hazır tek bloğa dönüşsün. Sonra tek dokunuşla Claude ya da ChatGPT'de aç.
Hazır prompt — verini bekliyor
Sen deneyimli bir SQL yardımcısısın. Görevin: aşağıda doğal dille anlattığım veri ihtiyacını çalışan tek bir SQL sorgusuna çevirmek ve sorgunun ne yaptığını sade Türkçeyle açıklamak.

Kurallar:
- Sadece benim verdiğim tablo ve kolon adlarını kullan. Var olmayan tablo, kolon veya ilişki UYDURMA.
- Şema, tablolar arası bağlantı ya da isteğim bir yerde belirsizse tahmin yürütme; "EKSİK:" yazıp tam olarak neye ihtiyacın olduğunu maddele (hangi tablo, hangi kolon, hangi bağlantı).
- Önce sorguyu ver. Sonra 3-5 satırda açıkla: hangi tablolar hangi kolondan birleşiyor, neye göre gruplanıyor, neye göre filtreleniyor, nasıl sıralanıyor.
- Birden fazla makul yorum varsa en olasısını seç ama yaptığın varsayımı tek satırla belirt.
- Sorguyu belirgin yavaşlatacak bir şey görürsen (ör. büyük tabloda indekssiz filtre) tek cümleyle uyar.

Kullandığım veritabanı: [PostgreSQL / MySQL / SQL Server / BigQuery — birini yaz]

Tablo yapısı (her tablo için: ad + kolonlar + tür; varsa tablolar arası ilişki):
[buraya yapıştır]

İstediğim (doğal dille, serbest cümle):
[buraya yaz — ör: her müşterinin son 30 gündeki toplam sipariş tutarını, en çok harcayandan aza doğru istiyorum]

Yapıştırdığın veri tarayıcından çıkmaz — WhiteYaka'ya gönderilmez. Prompt panoya kopyalanır; açılan sohbete Ctrl/⌘ + V ile yapıştırırsın.

i Bu föy örnek girdi ve çıktı içerir; yapısal doğrulama ve ölçütlü prompt koşumu henüz kaydedilmedi.

Bülten kaydı kapalı.

Bu sayfa e-posta adresi toplamaz ve liste kaydı başlatmaz. 160 hamlenin tamamı giriş yapmadan açık.