"""Türkçe tablo-soru test kümesini (TR-TabloSQL) üretir ve altın SQL'leri doğrular. Soru tipleri Spider (seçim, filtre, toplama, gruplama, sıralama, iç içe sorgu, çoklu tablo) ve BIRD (dış bilgi/kanıt gerektiren sorular, değer eşleme, birim dönüştürme) kümelerinden uyarlanmış; Türkiye'ye özgü zorluklar eklenmiştir: tr_sayi : '1.234,56' biçimli sayılar (belgede veya soruda) birim : 'bin TL', 'bin MWh' gibi ölçekli birimler ve dönüşüm tarih : 'Ocak 2024', '15.03.2025' gibi Türkçe tarih yazımları deger_esleme : İ/ı, büyük/küçük harf, ek almış özel adlar (İzmir'in, ISPARTA) toplam_satiri: belgede hazır 'Toplam' satırı olan tablolarda çift sayım tuzağı cevapsiz : tablolarda cevabı olmayan sorular (sistem bunu açıkça söylemeli) altin_sql = None olan sorular cevapsızdır. Çalıştırma: python benchmark/build_benchmark.py """ from __future__ import annotations import json import sys from pathlib import Path ROOT = Path(__file__).resolve().parent.parent sys.path.insert(0, str(ROOT)) A = "gider_turlerine_butce_gerceklesme" B = "yillara_personel_sayisi" C = "tuketici_fiyat_endeksi_degisim" D = "illere_elektrik_tuketimi" E = "ozet_gelir_tablosu" F = "belediye_hizmet_ucret_tarifesi" G = "mahallelere_su_abone_sayisi" # (soru, altın_sql | None, zorluk, kategoriler, kanıt(BIRD tarzı) | None, uyarlama) Q = [ # ---------------------------------------------------------------- A: bütçe gerçekleşme ("2024 yılında personel giderleri için ne kadar harcama gerçekleşti?", f"SELECT gerceklesme_2024 FROM {A} WHERE TR_NORM(gider_turu)=TR_NORM('Personel Giderleri')", "kolay", ["secim", "tr_sayi", "deger_esleme"], None, "Spider: tek tablo seçim"), ("Sermaye giderlerinin 2023 bütçesi kaç TL'dir?", f"SELECT butce_2023 FROM {A} WHERE gider_turu='Sermaye Giderleri'", "kolay", ["secim", "deger_esleme", "tr_sayi"], None, "Spider: tek tablo seçim"), ("2024 bütçesinde en fazla ödenek ayrılan gider türü hangisidir?", f"SELECT gider_turu FROM {A} WHERE toplam_satiri=0 ORDER BY butce_2024 DESC LIMIT 1", "orta", ["siralama", "toplam_satiri"], None, "Spider: ORDER BY ... LIMIT"), ("2024 yılında tüm gider türlerinin toplam gerçekleşmesi ne kadardır?", f"SELECT SUM(gerceklesme_2024) FROM {A} WHERE toplam_satiri=0", "orta", ["toplama", "toplam_satiri", "tr_sayi"], None, "Spider: SUM"), ("Gerçekleşme oranı yüzde 90'ın altında kalan gider türleri hangileridir?", f"SELECT gider_turu FROM {A} WHERE gerceklesme_orani_2024 < 90 AND toplam_satiri=0", "orta", ["filtre", "yuzde"], None, "Spider: WHERE karşılaştırma"), ("Faiz giderlerinin bütçesi 2023'ten 2024'e yüzde kaç arttı?", f"SELECT (butce_2024-butce_2023)*100.0/butce_2023 FROM {A} WHERE gider_turu='Faiz Giderleri'", "orta", ["artis_yuzdesi", "sayisal"], "Artış yüzdesi = (yeni - eski) / eski × 100", "BIRD: formül kanıtı"), ("2023 yılında gider türü başına ortalama bütçe nedir?", f"SELECT AVG(butce_2023) FROM {A} WHERE toplam_satiri=0", "orta", ["toplama", "toplam_satiri"], None, "Spider: AVG"), ("Kaç gider türünün 2024 gerçekleşmesi bütçesini aştı?", f"SELECT COUNT(*) FROM {A} WHERE gerceklesme_2024 > butce_2024 AND toplam_satiri=0", "orta", ["sayim", "karsilastirma", "toplam_satiri"], None, "Spider: COUNT + sütunlar arası koşul"), ("Mal ve hizmet alımlarında 2024 bütçesi ile gerçekleşme arasındaki fark kaç TL?", f"SELECT butce_2024-gerceklesme_2024 FROM {A} WHERE gider_turu='Mal ve Hizmet Alım Giderleri'", "orta", ["sayisal", "deger_esleme"], None, "BIRD: aritmetik"), ("2024 yılında 100 milyon TL'den fazla harcama yapılan gider türleri hangileri?", f"SELECT gider_turu FROM {A} WHERE gerceklesme_2024 > 100000000 AND toplam_satiri=0", "orta", ["filtre", "birim", "toplam_satiri"], "100 milyon TL = 100.000.000 TL", "BIRD: birim kanıtı"), ("2022 yılı personel gideri bütçesi ne kadardı?", None, "orta", ["cevapsiz"], None, "Cevapsız: tabloda 2022 yok"), ("2024 yılı genel bütçe gerçekleşme oranı yüzde kaçtır?", f"SELECT gerceklesme_orani_2024 FROM {A} WHERE toplam_satiri=1", "orta", ["secim", "yuzde", "toplam_satiri"], None, "Spider: seçim"), # ---------------------------------------------------------------- B: personel ("2022 yılında kaç memur çalışıyordu?", f"SELECT memur FROM {B} WHERE yil=2022", "kolay", ["secim", "tr_sayi"], None, "Spider: seçim"), ("Toplam personel sayısının en yüksek olduğu yıl hangisi?", f"SELECT yil FROM {B} ORDER BY toplam DESC LIMIT 1", "kolay", ["siralama"], None, "Spider: ORDER BY"), ("2020-2024 döneminde ortalama işçi sayısı kaçtır?", f"SELECT AVG(isci) FROM {B} WHERE yil BETWEEN 2020 AND 2024", "kolay", ["toplama", "tr_sayi"], None, "Spider: AVG"), ("Sözleşmeli personel sayısı 2020'den 2024'e kaç kişi arttı?", f"SELECT (SELECT sozlesmeli_personel FROM {B} WHERE yil=2024)-(SELECT sozlesmeli_personel FROM {B} WHERE yil=2020)", "orta", ["sayisal", "ic_ice"], None, "Spider: iç içe sorgu"), ("İşçi sayısı 2.400'ün üzerinde olan yıllar hangileri?", f"SELECT yil FROM {B} WHERE isci > 2400", "kolay", ["filtre", "tr_sayi"], None, "Spider: WHERE"), ("2024'te memurların toplam personel içindeki payı yüzde kaçtır?", f"SELECT memur*100.0/toplam FROM {B} WHERE yil=2024", "orta", ["sayisal", "yuzde"], "Pay (%) = memur / toplam × 100", "BIRD: formül kanıtı"), ("2025 yılında kaç işçi istihdam edilmesi planlanıyor?", None, "orta", ["cevapsiz"], None, "Cevapsız: plan/2025 verisi yok"), # ---------------------------------------------------------------- C: fiyat endeksi ("Mart 2025'te endeks değeri kaçtı?", f"SELECT endeks FROM {C} WHERE donem='2025-03'", "kolay", ["secim", "tarih", "tr_sayi"], None, "Spider: seçim"), ("2024 yılında aylık değişimin en yüksek olduğu ay hangisi?", f"SELECT donem FROM {C} WHERE donem LIKE '2024-%' ORDER BY degisim_aylik DESC LIMIT 1", "orta", ["siralama", "tarih"], None, "Spider: ORDER BY + filtre"), ("2024 yılı aylık değişim oranlarının ortalaması nedir?", f"SELECT AVG(degisim_aylik) FROM {C} WHERE donem LIKE '2024-%'", "orta", ["toplama", "tarih", "yuzde"], None, "Spider: AVG"), ("Haziran 2025'te yıllık değişim yüzde kaç olarak gerçekleşti?", f"SELECT degisim_yillik FROM {C} WHERE donem='2025-06'", "kolay", ["secim", "tarih", "yuzde"], None, "Spider: seçim"), ("Aylık değişimin %4'ü aştığı kaç ay var?", f"SELECT COUNT(*) FROM {C} WHERE degisim_aylik > 4", "orta", ["sayim", "filtre", "yuzde"], None, "Spider: COUNT"), ("Endeks Ocak 2024'ten Aralık 2024'e yüzde kaç arttı?", f"SELECT ((SELECT endeks FROM {C} WHERE donem='2024-12')-(SELECT endeks FROM {C} WHERE donem='2024-01'))*100.0/(SELECT endeks FROM {C} WHERE donem='2024-01')", "zor", ["artis_yuzdesi", "tarih", "ic_ice"], "Artış yüzdesi = (yeni - eski) / eski × 100", "BIRD: formül kanıtı + iç içe"), ("Yıllık değişimin yüzde 50'nin altına ilk düştüğü dönem hangisidir?", f"SELECT MIN(donem) FROM {C} WHERE degisim_yillik < 50", "zor", ["tarih", "filtre"], None, "Spider: MIN + filtre"), ("Temmuz 2025 endeks değeri nedir?", None, "orta", ["cevapsiz", "tarih"], None, "Cevapsız: veri Haziran 2025'te bitiyor"), # ---------------------------------------------------------------- D: elektrik ("İzmir'in 2024 elektrik tüketimi ne kadar?", f"SELECT yil_2024 FROM {D} WHERE TR_NORM(il)=TR_NORM('İzmir')", "kolay", ["secim", "deger_esleme", "tr_sayi"], None, "Spider: seçim"), ("Isparta'nın 2023 yılındaki elektrik tüketimi kaç bin MWh'tir?", f"SELECT yil_2023 FROM {D} WHERE il='Isparta'", "kolay", ["secim", "deger_esleme"], None, "Spider: seçim"), ("ISPARTA ilinin 2022 tüketimi nedir?", f"SELECT yil_2022 FROM {D} WHERE il='Isparta'", "kolay", ["secim", "deger_esleme"], None, "Türkçe büyük harf: I/ı"), ("Marmara bölgesindeki illerin 2024 toplam tüketimi ne kadar?", f"SELECT SUM(yil_2024) FROM {D} WHERE bolge='Marmara'", "orta", ["toplama", "filtre"], None, "Spider: SUM + WHERE"), ("2024'te en çok elektrik tüketen il hangisi?", f"SELECT il FROM {D} WHERE toplam_satiri=0 ORDER BY yil_2024 DESC LIMIT 1", "orta", ["siralama", "toplam_satiri"], None, "Spider: ORDER BY"), ("Tüketimi 2023'ten 2024'e azalan kaç il var?", f"SELECT COUNT(*) FROM {D} WHERE yil_2024 < yil_2023 AND toplam_satiri=0", "orta", ["sayim", "karsilastirma", "toplam_satiri"], None, "Spider: COUNT"), ("Bölgelere göre 2024 toplam tüketimini listeler misin?", f"SELECT bolge, SUM(yil_2024) FROM {D} WHERE toplam_satiri=0 GROUP BY bolge", "orta", ["gruplama", "toplam_satiri"], None, "Spider: GROUP BY"), ("Ankara'nın 2024 elektrik tüketimi kaç MWh?", f"SELECT yil_2024*1000 FROM {D} WHERE il='Ankara'", "orta", ["birim", "secim"], "Tablo bin MWh cinsindendir; 1 bin MWh = 1.000 MWh", "BIRD: birim kanıtı"), ("İstanbul'un tüketimi 2022'den 2024'e yüzde kaç değişti?", f"SELECT (yil_2024-yil_2022)*100.0/yil_2022 FROM {D} WHERE il='İstanbul'", "orta", ["artis_yuzdesi", "deger_esleme"], "Değişim yüzdesi = (yeni - eski) / eski × 100", "BIRD: formül kanıtı"), ("Değişim oranı en düşük olan il hangisidir?", f"SELECT il FROM {D} WHERE toplam_satiri=0 ORDER BY degisim_2023_2024 ASC LIMIT 1", "orta", ["siralama", "toplam_satiri", "yuzde"], None, "Spider: ORDER BY"), ("İç Anadolu'daki illerin 2023 ortalama tüketimi nedir?", f"SELECT AVG(yil_2023) FROM {D} WHERE bolge='İç Anadolu'", "orta", ["toplama", "filtre", "deger_esleme"], None, "Spider: AVG + WHERE"), ("Mersin'in 2024 elektrik tüketimi ne kadar?", None, "orta", ["cevapsiz", "deger_esleme"], None, "Cevapsız: il tabloda yok"), ("17 ilin 2022 yılındaki toplam tüketimi kaç bin MWh?", f"SELECT SUM(yil_2022) FROM {D} WHERE toplam_satiri=0", "orta", ["toplama", "toplam_satiri", "tr_sayi"], None, "Spider: SUM"), ("Karadeniz bölgesinde kaç il var?", f"SELECT COUNT(*) FROM {D} WHERE bolge='Karadeniz'", "kolay", ["sayim", "filtre"], None, "Spider: COUNT"), # ---------------------------------------------------------------- E: gelir tablosu ("2024 yılında hasılat ne kadardı?", f"SELECT cari_donem_2024 FROM {E} WHERE kalem='Hasılat'", "kolay", ["secim", "tr_sayi"], None, "Spider: seçim"), ("Şirketin 2023 dönem net kârı kaç TL'dir?", f"SELECT onceki_donem_2023*1000 FROM {E} WHERE kalem='Dönem Net Kârı'", "orta", ["birim", "secim"], "Tablo bin TL cinsindendir", "BIRD: birim kanıtı"), ("Net kâr bir önceki yıla göre yüzde kaç arttı?", f"SELECT (cari_donem_2024-onceki_donem_2023)*100.0/onceki_donem_2023 FROM {E} WHERE kalem='Dönem Net Kârı'", "orta", ["artis_yuzdesi"], "Artış yüzdesi = (cari - önceki) / önceki × 100", "BIRD: formül kanıtı"), ("2024'te satışların maliyeti ne kadar?", f"SELECT cari_donem_2024 FROM {E} WHERE kalem='Satışların Maliyeti (-)'", "kolay", ["secim", "tr_sayi", "negatif"], None, "Parantezli negatif sayı"), ("2024 brüt kâr marjı yüzde kaçtır?", f"SELECT (SELECT cari_donem_2024 FROM {E} WHERE kalem='Brüt Kâr')*100.0/(SELECT cari_donem_2024 FROM {E} WHERE kalem='Hasılat')", "zor", ["sayisal", "ic_ice", "yuzde"], "Brüt kâr marjı = Brüt Kâr / Hasılat × 100", "BIRD: alan bilgisi kanıtı"), ("Finansman giderleri 2023'e göre ne kadar arttı?", f"SELECT ABS(cari_donem_2024)-ABS(onceki_donem_2023) FROM {E} WHERE kalem='Finansman Giderleri (-)'", "zor", ["sayisal", "negatif"], "Giderler tabloda negatif (parantezli) gösterilir", "BIRD: işaret kanıtı"), ("Şirketin 2024 yılındaki çalışan sayısı kaçtır?", None, "orta", ["cevapsiz"], None, "Cevapsız: gelir tablosunda yok"), # ---------------------------------------------------------------- F: ücret tarifesi ("İşyeri açma ruhsatı ücreti ne kadar?", f"SELECT ucret FROM {F} WHERE hizmet='İşyeri Açma Ruhsatı'", "kolay", ["secim", "deger_esleme", "tr_sayi"], None, "Spider: seçim"), ("Zabıta hizmetleri grubunda kaç farklı hizmet var?", f"SELECT COUNT(DISTINCT hizmet) FROM {F} WHERE hizmet_grubu='Zabıta Hizmetleri'", "kolay", ["sayim", "birlesik_hucre"], None, "Spider: COUNT DISTINCT (birleşik hücre)"), ("1 Temmuz 2025'te yürürlüğe giren hizmetler hangileri?", f"SELECT hizmet FROM {F} WHERE yururluk_tarihi='2025-07-01'", "orta", ["filtre", "tarih"], None, "Spider: WHERE (tarih)"), ("Yürürlük tarihi 15.03.2025 olan hizmetlerin ortalama ücreti nedir?", f"SELECT AVG(ucret) FROM {F} WHERE yururluk_tarihi='2025-03-15'", "orta", ["toplama", "tarih"], None, "Türkçe tarih biçimi"), ("Sosyal tesisler grubundaki en pahalı hizmet hangisi?", f"SELECT hizmet FROM {F} WHERE hizmet_grubu='Sosyal Tesisler' ORDER BY ucret DESC LIMIT 1", "orta", ["siralama", "filtre", "birlesik_hucre"], None, "Spider: ORDER BY + WHERE"), ("Ücreti 2.000 TL'nin üzerinde olan kaç hizmet var?", f"SELECT COUNT(*) FROM {F} WHERE ucret > 2000", "kolay", ["sayim", "filtre", "tr_sayi"], None, "Spider: COUNT + WHERE"), ("Hizmet gruplarına göre ortalama ücretleri listeler misin?", f"SELECT hizmet_grubu, AVG(ucret) FROM {F} GROUP BY hizmet_grubu", "orta", ["gruplama", "birlesik_hucre"], None, "Spider: GROUP BY"), ("Mart 2025'ten önce yürürlüğe giren hizmetlerin sayısı nedir?", f"SELECT COUNT(*) FROM {F} WHERE yururluk_tarihi < '2025-03-01'", "orta", ["sayim", "tarih"], None, "Spider: COUNT + tarih karşılaştırma"), ("Otopark ücreti ne kadar?", None, "kolay", ["cevapsiz"], None, "Cevapsız: tarifede yok"), # ---------------------------------------------------------------- G: su (çizgisiz tablo) ("Fatih mahallesindeki abone sayısı kaç?", f"SELECT abone_sayisi FROM {G} WHERE mahalle='Fatih'", "kolay", ["secim", "tr_sayi"], None, "Spider: seçim"), ("En fazla su tüketen mahalle hangisi?", f"SELECT mahalle FROM {G} WHERE toplam_satiri=0 ORDER BY yillik_tuketim DESC LIMIT 1", "orta", ["siralama", "toplam_satiri"], None, "Spider: ORDER BY"), ("Tüm mahallelerin toplam abone sayısı nedir?", f"SELECT SUM(abone_sayisi) FROM {G} WHERE toplam_satiri=0", "orta", ["toplama", "toplam_satiri", "tr_sayi"], None, "Spider: SUM"), ("Abone başına tüketimi 150 m³'ün üzerinde olan mahalleler hangileri?", f"SELECT mahalle FROM {G} WHERE abone_basina_tuketim > 150 AND toplam_satiri=0", "orta", ["filtre", "birim"], None, "Spider: WHERE"), ("Yıldırım Beyazıt mahallesinin yıllık tüketimi kaç litre?", f"SELECT yillik_tuketim*1000 FROM {G} WHERE mahalle='Yıldırım Beyazıt'", "orta", ["birim", "secim", "deger_esleme"], "1 m³ = 1.000 litre", "BIRD: birim kanıtı"), ("Kurtuluş mahallesinde 2023 yılındaki abone sayısı kaçtı?", None, "orta", ["cevapsiz"], None, "Cevapsız: yalnızca 2024 verisi var"), # ---------------------------------------------------------------- çoklu tablo ("2024'te personel giderleri gerçekleşmesinin toplam personel sayısına bölümü (kişi başı personel gideri) ne kadardır?", f"SELECT (SELECT gerceklesme_2024 FROM {A} WHERE gider_turu='Personel Giderleri')*1.0/(SELECT toplam FROM {B} WHERE yil=2024)", "zor", ["coklu_tablo", "sayisal", "ic_ice"], "Kişi başı gider = gider / personel sayısı", "Spider: çoklu tablo (skaler alt sorgular)"), ] # ============================================================================ # AYRILMIŞ TEST BÖLÜMÜ: kural tabanlı sistem geliştirilirken HİÇ kullanılmadı. # Yeni ifade kalıpları, farklı varlıklar ve yeni soru biçimleri içerir. QT = [ ("Borç verme kaleminde 2024 yılında gerçekleşen tutar nedir?", f"SELECT gerceklesme_2024 FROM {A} WHERE gider_turu='Borç Verme'", "kolay", ["secim", "tr_sayi"], None, "Spider: seçim"), ("2023'te bütçesi en düşük olan gider türü hangisi?", f"SELECT gider_turu FROM {A} WHERE toplam_satiri=0 ORDER BY butce_2023 ASC LIMIT 1", "orta", ["siralama", "toplam_satiri"], None, "Spider: ORDER BY"), ("Cari transferlerin 2024 gerçekleşme oranı kaçtır?", f"SELECT gerceklesme_orani_2024 FROM {A} WHERE gider_turu='Cari Transferler'", "kolay", ["secim", "yuzde"], None, "Spider: seçim"), ("2023 yılında gerçekleşen toplam harcama ne kadar?", f"SELECT SUM(gerceklesme_2023) FROM {A} WHERE toplam_satiri=0", "orta", ["toplama", "toplam_satiri"], None, "Spider: SUM"), ("Sermaye transferleri için 2024'te ayrılan bütçe kaç milyon TL?", f"SELECT butce_2024/1000000.0 FROM {A} WHERE gider_turu='Sermaye Transferleri'", "orta", ["birim", "secim"], "1 milyon TL = 1.000.000 TL", "BIRD: birim kanıtı"), ("2021 yılında faiz giderleri ne kadar gerçekleşti?", None, "orta", ["cevapsiz"], None, "Cevapsız: 2021 yok"), ("2023 yılındaki sözleşmeli personel sayısı nedir?", f"SELECT sozlesmeli_personel FROM {B} WHERE yil=2023", "kolay", ["secim"], None, "Spider: seçim"), ("Memur sayısının en az olduğu yıl hangisidir?", f"SELECT yil FROM {B} ORDER BY memur ASC LIMIT 1", "kolay", ["siralama"], None, "Spider: ORDER BY"), ("Beş yıllık dönemde toplam personel sayısının ortalaması kaç?", f"SELECT AVG(toplam) FROM {B}", "orta", ["toplama"], None, "Spider: AVG"), ("Toplam personel 2021'den 2023'e yüzde kaç değişti?", f"SELECT ((SELECT toplam FROM {B} WHERE yil=2023)-(SELECT toplam FROM {B} WHERE yil=2021))*100.0/(SELECT toplam FROM {B} WHERE yil=2021)", "zor", ["artis_yuzdesi", "ic_ice"], "Değişim yüzdesi = (yeni - eski) / eski × 100", "BIRD: formül kanıtı"), ("Ekim 2024 aylık değişim oranı nedir?", f"SELECT degisim_aylik FROM {C} WHERE donem='2024-10'", "kolay", ["secim", "tarih", "yuzde"], None, "Spider: seçim"), ("2025'in ilk yarısında endeksin en yüksek değeri nedir?", f"SELECT MAX(endeks) FROM {C} WHERE donem BETWEEN '2025-01' AND '2025-06'", "orta", ["toplama", "tarih"], None, "Spider: MAX + tarih aralığı"), ("Aylık değişimin yüzde 2'nin altında kaldığı dönemler hangileri?", f"SELECT donem FROM {C} WHERE degisim_aylik < 2", "orta", ["filtre", "tarih", "yuzde"], None, "Spider: WHERE"), ("2024 Ağustos ayında yıllık değişim yüzde kaçtı?", f"SELECT degisim_yillik FROM {C} WHERE donem='2024-08'", "orta", ["secim", "tarih"], None, "Tarih yazım sırası farklı"), ("Eylül 2025 aylık değişimi ne olmuştur?", None, "orta", ["cevapsiz", "tarih"], None, "Cevapsız: kapsam dışı dönem"), ("Gaziantep'in 2022 yılı elektrik tüketimi nedir?", f"SELECT yil_2022 FROM {D} WHERE il='Gaziantep'", "kolay", ["secim", "deger_esleme"], None, "Spider: seçim"), ("IĞDIR ilinde 2024 tüketimi ne kadardı?", f"SELECT yil_2024 FROM {D} WHERE il='Iğdır'", "kolay", ["secim", "deger_esleme"], None, "Türkçe büyük harf: I/Ğ"), ("Akdeniz bölgesindeki illerin 2022 toplam elektrik tüketimi kaç bin MWh?", f"SELECT SUM(yil_2022) FROM {D} WHERE bolge='Akdeniz'", "orta", ["toplama", "filtre"], None, "Spider: SUM + WHERE"), ("2023 yılında en az elektrik tüketen il hangisidir?", f"SELECT il FROM {D} WHERE toplam_satiri=0 ORDER BY yil_2023 ASC LIMIT 1", "orta", ["siralama", "toplam_satiri"], None, "Spider: ORDER BY"), ("Tüketimi 2023'ten 2024'e artan illeri listeler misin?", f"SELECT il FROM {D} WHERE yil_2024 > yil_2023 AND toplam_satiri=0", "orta", ["filtre", "karsilastirma", "toplam_satiri"], None, "Spider: sütunlar arası koşul"), ("Doğu Anadolu bölgesinde kaç il bulunuyor?", f"SELECT COUNT(*) FROM {D} WHERE bolge='Doğu Anadolu'", "kolay", ["sayim", "filtre"], None, "Spider: COUNT"), ("Kocaeli'nin 2023 tüketimi kaç MWh'tir?", f"SELECT yil_2023*1000 FROM {D} WHERE il='Kocaeli'", "orta", ["birim", "secim"], "1 bin MWh = 1.000 MWh", "BIRD: birim kanıtı"), ("Antalya'nın 2025 elektrik tüketimi nedir?", None, "orta", ["cevapsiz"], None, "Cevapsız: 2025 yok"), ("2024 yılı vergi öncesi kârı ne kadardır?", f"SELECT cari_donem_2024 FROM {E} WHERE kalem='Vergi Öncesi Kâr'", "kolay", ["secim", "deger_esleme"], None, "Spider: seçim"), ("Hasılat 2023'ten 2024'e yüzde kaç arttı?", f"SELECT (cari_donem_2024-onceki_donem_2023)*100.0/onceki_donem_2023 FROM {E} WHERE kalem='Hasılat'", "orta", ["artis_yuzdesi"], "Artış yüzdesi = (yeni - eski) / eski × 100", "BIRD: formül kanıtı"), ("2023 yılında pazarlama giderleri kaç TL idi?", f"SELECT onceki_donem_2023*1000 FROM {E} WHERE kalem='Pazarlama Giderleri (-)'", "orta", ["birim", "negatif"], "Tablo bin TL cinsindendir", "BIRD: birim kanıtı"), ("Düğün salonu kiralama ücreti ne kadardır?", f"SELECT ucret FROM {F} WHERE hizmet='Düğün Salonu Kiralama'", "kolay", ["secim"], None, "Spider: seçim"), ("Çevre hizmetleri grubundaki hizmetlerin ortalama ücreti nedir?", f"SELECT AVG(ucret) FROM {F} WHERE hizmet_grubu='Çevre Hizmetleri'", "orta", ["toplama", "filtre", "birlesik_hucre"], None, "Spider: AVG + WHERE"), ("En ucuz hizmet hangisidir?", f"SELECT hizmet FROM {F} ORDER BY ucret ASC LIMIT 1", "kolay", ["siralama"], None, "Spider: ORDER BY"), ("01.01.2025 tarihinde yürürlüğe giren kaç hizmet var?", f"SELECT COUNT(*) FROM {F} WHERE yururluk_tarihi='2025-01-01'", "orta", ["sayim", "tarih"], None, "Türkçe tarih biçimi"), ("Nikah salonu ücreti nedir?", None, "kolay", ["cevapsiz"], None, "Cevapsız: tarifede yok"), ("Bahçelievler mahallesinin abone başına tüketimi kaç m³?", f"SELECT abone_basina_tuketim FROM {G} WHERE mahalle='Bahçelievler'", "kolay", ["secim"], None, "Spider: seçim"), ("Abone sayısı en az olan mahalle hangisidir?", f"SELECT mahalle FROM {G} WHERE toplam_satiri=0 ORDER BY abone_sayisi ASC LIMIT 1", "orta", ["siralama", "toplam_satiri"], None, "Spider: ORDER BY"), ("Abone sayısı 5.000'in üzerinde olan kaç mahalle var?", f"SELECT COUNT(*) FROM {G} WHERE abone_sayisi > 5000 AND toplam_satiri=0", "orta", ["sayim", "filtre", "tr_sayi", "toplam_satiri"], None, "Spider: COUNT + WHERE"), ("Mahallelerin ortalama yıllık su tüketimi nedir?", f"SELECT AVG(yillik_tuketim) FROM {G} WHERE toplam_satiri=0", "orta", ["toplama", "toplam_satiri"], None, "Spider: AVG"), ] def main(): from t2s.pipeline import build_reference_db from t2s.schema import connect ref = ROOT / "outputs" / "db" / "referans.db" build_reference_db(ref) con = connect(ref, readonly=True) items = [] allq = [("gelistirme", f"TR{i:03d}", x) for i, x in enumerate(Q, 1)] + \ [("test", f"TRT{i:02d}", x) for i, x in enumerate(QT, 1)] for bolum, qid, (soru, sql, zor, kat, kanit, uyar) in allq: if sql: res = con.execute(sql).fetchall() assert res and any(v is not None for row in res for v in row), (qid, soru, res) items.append({"id": qid, "bolum": bolum, "soru": soru, "altin_sql": sql, "cevaplanabilir": sql is not None, "zorluk": zor, "kategoriler": kat, "kanit": kanit, "uyarlama": uyar, "tablolar": sorted({t for t in (A, B, C, D, E, F, G) if sql and t in sql})}) out = ROOT / "benchmark" / "tr_tablosoru.json" out.write_text(json.dumps({"ad": "TR-TabloSQL v1", "aciklama": __doc__.strip().splitlines()[0], "soru_sayisi": len(items), "sorular": items}, ensure_ascii=False, indent=1), encoding="utf-8") print(f"{len(items)} soru yazıldı -> {out}") print("cevapsız:", sum(not x["cevaplanabilir"] for x in items), "| geliştirme:", sum(x["bolum"] == "gelistirme" for x in items), "| ayrılmış test:", sum(x["bolum"] == "test" for x in items)) if __name__ == "__main__": main()