# 30 — Yazar raporu: `hangi-bolumlerin-kontenjani-azaldi` (gece vardiyası, 22 Eylül 2026) Rol: `rehber-yazari` · Dosya: `content/rehber/hangi-bolumlerin-kontenjani-azaldi.md` (yalnız bu dosya oluşturuldu; başka hiçbir dosyaya dokunulmadı, `git add`/commit yok). Şartname: `02-seo-konu-plani.md` §2 Dalga A #5 · Kalite eşiği: `05-ceo-kararlari.md` §C(d) · Editör dersleri: `20-editor-denetimi.md`. İşaret: **[D]** bu gece kendim koştum/açtım · **[A]** ikincil kaynak · **[K]** kaynak açılamadı. Veri: `sqlite3 -readonly data/yokatlas.db`, `veri_meta.refresh_2026_tarih = 2026-09-21T17:21:23Z` [D]. --- ## Özet (5 madde) 1. **SEO planındaki dört başlangıç rakamının üçü tuttu, biri yanlış yöne götürüyordu.** Planın verdiği sorguyu birebir koşturdum: İng. Dili ve Ed. −1.096, Görsel İletişim Tasarımı −1.084, Hukuk −1.072, Diş Hek. −792 **birebir çıktı** [D]. Ama Görsel İletişim Tasarımı'nın düşüşünün **1.000'i tek bir açıköğretim satırı** (Anadolu Ü. AÖF, 3.000 → 2.000). Örgün programlara bakıldığında aynı bölüm 89 programda yalnızca −134 kaybediyor ve ilk 15'e girmiyor. Editörün "açıköğretimi ayır" uyarısı bu konuda teorik değil, **manşeti değiştiren** bir uyarıymış. Yazı bunu ayrı bir alt başlıkta anlatıyor. 2. **Yazının en güçlü bulgusu bir resmî kaynak ↔ veri eşleşmesi:** YÖK Başkanı'nın 17 Şubat 2026 açıklamasında *"Devlet üniversitelerindeki kontenjan azaltma uygulaması, 2026 yılından itibaren vakıf üniversitelerimiz için de geçerli olacaktır… başta hukuk, psikoloji, eczacılık, diş hekimliği ve mimarlık"* deniyor [D: yok.gov.tr]. Kendi verimiz bu beş bölümde tam bu deseni gösteriyor: **Hukuk devlet +48 / vakıf −1.191; Psikoloji devlet +53 / vakıf −586**; beşinde de vakıf kaybetmiş [D]. Rakipte karşılığı olmayan bölüm bu. 3. **"Kontenjan azaldı → taban sıkılaşır" iddiasını ölçtüm ve zayıf çıktı; yazı bunu zayıf diye yazıyor.** 8.681 programda Pearson **0,19**, Spearman **0,15**. Daha anlamlı bulgu: 2026'da *her şey* sıkılaştı — kontenjanı **hiç değişmeyen** 5.086 programın %82,2'sinin tabanı küçüldü (medyan −%12,7). Kontenjan kısıntısı bunu %87,1 / −%15,8'e çıkarıyor, yani etki gerçek ama küçük; **daha net sinyal artış tarafında** (%25+ artanlarda sıkılaşan oranı %58,0'e düşüyor). Karşı örnekler tabloya kondu: Bilgisayar Müh. −654 kontenjan ama medyan taban 85.914 → 109.327 **gevşedi**; Hemşirelik +248 kontenjan ama 258 programın 242'si **sıkılaştı**. 4. **"Kontenjanı azaldı" ≠ "program kapandı" ayrımı iki katmanlı yapıldı.** 2025'te kontenjanı olup 2026 kılavuzunda olmayan **938** satırın **352'sinde** aynı üniversitede aynı adlı program 2026'da **duruyor** (kod/satır değişimi), 586'sında durmuyor — ama onların bir kısmı da ad değişikliği (`veri_meta.kimlik_onar` kayıtlarında "İslami İlimler → İlahiyat" tipi örnekler var) [D]. Bu yüzden yazıda **hiçbir yerde "şu kadar program kapandı" cümlesi yok**; "kılavuzdan düştü" deniyor. 5. **Yayın eşiği (§C(d)) altı maddesi karşılandı:** yöntem kutusu rakamdan önce ve filtreyi tam veriyor · her rakam yazının kendi filtresiyle yeniden üretiliyor (aşağıdaki SQL'ler) · açılamayan kaynağa dayalı cümle yok · vaat dili yok (grep temiz) · ayrım cümlesi 2. paragrafta, ilk 200 kelimede · 3 frontmatter alanı, 1 mermaid + `%% aria:` + `%% altyazi:`, **7 tablo**, 27 iç link hedefi tek tek doğrulandı, `/tercih-robotu` ve `/il/*` kullanılmadı. --- ## 1. Havuz tanımı (yazının yöntem kutusuyla birebir) ```sql -- Bu yazının bütün tablolarının havuzu. Aşağıdaki her sorgu bunu kullanır. CREATE TEMP VIEW p AS SELECT CASE WHEN instr(isim,'(')>0 THEN rtrim(substr(isim,1,instr(isim,'(')-1)) ELSE isim END bolum, * FROM programs WHERE onlisans=0 -- yalnız lisans AND unitur IN ('DEVLET','VAKIF') -- KKTC / YURTDISI / VAKIF MYO hariç AND universite NOT LIKE 'KIBRIS AMERİKAN%' -- unitur='DEVLET' etiketi YANLIŞ (42 satır) AND isim NOT LIKE '%KKTC Uyruklu%' AND NOT (lower(COALESCE(fakulte,'')) LIKE '%açık%' OR lower(COALESCE(fakulte,'')) LIKE '%uzaktan%' OR lower(isim) LIKE '%açıköğretim%' OR lower(isim) LIKE '%uzaktan%'); ``` `bolum` ifadesi `src/lib/slug.ts:29` `bolumBazAdi`'nin SQL karşılığı. Tam eşdeğer değil (`bolumBazAdi` parantezleri metnin ortasından da atar), ama kataloğun tamamında bu farkı yaratan **tek bir ad** var: `İlahiyat (M.T.O.K.)` [D]. `/bolum/` linkleri bu yüzden birebir tutuyor. **Neden `unitur='DEVLET'` tek başına kullanılmadı:** Kıbrıs Amerikan Üniversitesi'nin 42 satırı (2 + 34 il boş/LEFKOŞA + 6 `(KKTC-LEFKOŞA)` adıyla) `DEVLET` etiketli [D] — editörün (h.2) bulgusu. Üniversite adıyla çıkarıldı. **Neden `il` kırılımı yapılmadı:** alan kirli (boş değerler + "KIBRIS"/"SARAYBOSNA" gibi ülke/şehir karışımı). Yazıda tek bir il rakamı yok. --- ## 2. Kullanılan SQL'ler ve çıktıları ### S1 — Eşleşme ve eşleşmeyenler ```sql SELECT 'eslesen', COUNT(*) FROM p WHERE kontenjan2025 IS NOT NULL AND kontenjan2026 IS NOT NULL UNION ALL SELECT 'kod degisen (eski_kod)', COUNT(*) FROM p WHERE eski_kod IS NOT NULL AND kontenjan2025 IS NOT NULL UNION ALL SELECT 'yeni satir', COUNT(*) FROM p WHERE kontenjan2025 IS NULL UNION ALL SELECT 'yeni satir kontenjan', SUM(kontenjan2026) FROM p WHERE kontenjan2025 IS NULL UNION ALL SELECT 'gercekten yeni (2021-25 hic yok)', COUNT(*) FROM p WHERE kontenjan2025 IS NULL AND kontenjan2024 IS NULL AND kontenjan2023 IS NULL AND kontenjan2022 IS NULL AND kontenjan2021 IS NULL; ``` ``` eslesen 10534 kod degisen (eski_kod) 301 yeni satir 505 yeni satir kontenjan 14.244 gercekten yeni (2021-25 hic yok) 425 ``` `programs` tablosunda **2026 kontenjanı olmayan satır yok** (11.039 satırın 11.039'unda `kontenjan2026` dolu) [D] — yani "2025'te vardı, 2026'da kılavuzda ama kontenjansız" diye bir küme yok; kılavuzdan düşenler `programs_arsiv`'e gidiyor. ### S2 — Kılavuzdan düşen satırlar (kapanma ≠ kısıntı) ```sql WITH kapali AS ( SELECT a.* FROM programs_arsiv a WHERE a.onlisans=0 AND a.unitur IN ('DEVLET','VAKIF') AND a.universite NOT LIKE 'KIBRIS AMERİKAN%' AND a.isim NOT LIKE '%KKTC Uyruklu%' AND NOT (lower(COALESCE(a.fakulte,'')) LIKE '%açık%' OR lower(COALESCE(a.fakulte,'')) LIKE '%uzaktan%' OR lower(a.isim) LIKE '%açıköğretim%' OR lower(a.isim) LIKE '%uzaktan%') AND a.kontenjan2025 IS NOT NULL AND a.son_kilavuz_yili=2025) SELECT 'ayni uni+ayni isim 2026 kilavuzunda VAR', COUNT(*), SUM(kontenjan2025) FROM kapali k WHERE EXISTS (SELECT 1 FROM programs p2 WHERE p2.universite=k.universite AND p2.isim=k.isim AND p2.onlisans=0) UNION ALL SELECT 'YOK', COUNT(*), SUM(kontenjan2025) FROM kapali k WHERE NOT EXISTS (SELECT 1 FROM programs p2 WHERE p2.universite=k.universite AND p2.isim=k.isim AND p2.onlisans=0); ``` ``` ayni uni+ayni isim 2026 kilavuzunda VAR 352 5.824 YOK 586 17.660 -- toplam 938 satir / 23.484 kontenjan / 184 universite / 453'unde 2025 tabani vardi ``` Örnek: `HACETTEPE ÜNİVERSİTESİ · Bilgisayar Mühendisliği · kontenjan2025=120` arşivde duruyor ama Hacettepe'nin 2026'da Bilgisayar Mühendisliği programı **var** — yani bu satır "kapandı" değil, kod/satır değişimi. 352'lik kümenin anlamı bu. ### S3 — Denge tablosu (yazıdaki ilk tablo) ```sql SELECT CASE WHEN kontenjan2026kontenjan2025 THEN 'artan' ELSE 'degismeyen' END grup, COUNT(*) n, SUM(kontenjan2025) k25, SUM(kontenjan2026) k26, SUM(kontenjan2026)-SUM(kontenjan2025) fark FROM p WHERE kontenjan2025 IS NOT NULL AND kontenjan2026 IS NOT NULL GROUP BY grup; ``` ``` azalan 3698 130690 102930 -27760 artan 1056 25332 32058 +6726 degismeyen 5780 206750 206750 0 TOPLAM 10534 362772 341738 -21034 (-%5,8) ``` Kurum kırılımı (aynı havuz): ``` DEVLET 6107 program · azaltan 1738 (%28,5) · 266665 → 252916 · -13749 (-%5,2) VAKIF 4427 program · azaltan 1960 (%44,3) · 96107 → 88822 · -7285 (-%7,6) ``` Arz toplamı (eşleşen + yeni − düşen): 362.772 + 23.484 = **386.256** → 341.738 + 14.244 = **355.982**, fark **−30.274 (−%7,8)**. ### S4 — Bölüm bazında en çok azalanlar (yazıdaki 15'lik tablo) ```sql SELECT bolum, COUNT(*) n, SUM(kontenjan2026=15 ORDER BY fark ASC LIMIT 15; -- DESC = artanlar ``` ``` İngiliz Dili ve Edebiyatı 119 75 5289 4105 -1184 -22.4 -790 -394 Hukuk 141 82 9198 8055 -1143 -12.4 +48 -1191 Fizyoterapi ve Rehabilitasyon 189 147 5127 4221 -906 -17.7 -713 -193 Diş Hekimliği 164 134 6385 5569 -816 -12.8 -423 -393 Bilgisayar Mühendisliği 289 96 13186 12532 -654 -5.0 -81 -573 Beslenme ve Diyetetik 178 129 3551 2972 -579 -16.3 -395 -184 Sosyal Bilgiler Öğretmenliği 64 61 2645 2105 -540 -20.4 -540 0 Psikoloji 284 158 9037 8504 -533 -5.9 +53 -586 Türkçe Öğretmenliği 84 59 3217 2713 -504 -15.7 -468 -36 Finans ve Bankacılık 48 26 2526 2030 -496 -19.6 -470 -26 İlahiyat 196 77 10420 9961 -459 -4.4 -459 0 Sosyal Hizmet 83 63 2417 1961 -456 -18.9 -467 +11 Moleküler Biyoloji ve Genetik 99 74 2815 2373 -442 -15.7 -299 -143 Mimarlık 162 85 3983 3662 -321 -8.1 -150 -171 Yazılım Mühendisliği 130 54 4421 4116 -305 -6.9 -37 -268 -- ORDER BY fark DESC (n>=15): Siyaset Bilimi ve Kamu Yönetimi 128 4855 5241 +386 +8.0 | Hemşirelik 262 15543 15791 +248 +1.6 Sınıf Öğretmenliği 94 3420 3562 +142 +4.2 | Veri Bilimi ve Analitiği 32 752 887 +135 +18.0 Metalurji ve Malzeme Müh. 44 1684 1719 +35 +2.1 (5. sıra — yazıdaki "100 kişiden fazla" eşiğinin gerekçesi) ``` Bölüm adı düzeyinde denge: **354 bölüm adı · 235 azaldı · 27 arttı · 92 değişmedi** [D]. ### S5 — Açıköğretim tuzağı (yazının manşetini değiştiren sorgu) ```sql -- (a) açık/uzaktan DAHİL edilirse ilk 5: İngiliz Dili ve Edebiyatı 120 5389→4205 -1184 | Hukuk 141 -1143 Görsel İletişim Tasarımı 90 5422→4288 -1134 | Fizyoterapi -906 | Diş Hek. -816 -- (b) Görsel İletişim Tasarımı'nın açık/örgün kırılımı: SELECT (lower(COALESCE(fakulte,'')) LIKE '%açık%' OR lower(COALESCE(fakulte,'')) LIKE '%uzaktan%') acik, COUNT(*), SUM(kontenjan2025), SUM(kontenjan2026) FROM p2 WHERE bolum='Görsel İletişim Tasarımı' GROUP BY 1; -- örgün : 89 program · 2422 → 2288 · -134 (-%5,5) -- açık : 1 program · 3000 → 2000 · -1000 (ANADOLU ÜNİVERSİTESİ, Açıköğretim Fakültesi) -- (c) havuzdaki tüm açık/uzaktan lisans bloğu: 61 program · 5 üniversite · 24525 → 23349 (-1176) ``` ### S6 — Kontenjan değişimi ↔ taban sırası değişimi ilişkisi ```sql WITH d AS (SELECT 1.0*(kontenjan2026-kontenjan2025)/kontenjan2025 kd, 1.0*(sira2026-sira2025)/sira2025 sd FROM p WHERE kontenjan2025 IS NOT NULL AND kontenjan2026 IS NOT NULL AND kontenjan2025>0 AND sira2025 IS NOT NULL AND sira2026 IS NOT NULL) SELECT COUNT(*), ROUND((AVG(kd*sd)-AVG(kd)*AVG(sd)) / (sqrt(AVG(kd*kd)-AVG(kd)*AVG(kd))*sqrt(AVG(sd*sd)-AVG(sd)*AVG(sd))),3) FROM d; -- 8681 | Pearson 0.192 (aynı veride RANK() ile Spearman 0.153) ``` Bant tablosu (yazıdaki 7 satırlık tablo; medyan `ROW_NUMBER()` ile, çift sayıda gözlemde iki orta değerin ortalaması): ``` band n sikilasan% medyan sira degisimi %25+ kisildi 963 87.1 -15.8 %10-25 kisildi 1194 82.2 -13.9 %0-10 kisildi 679 71.6 -8.1 degismedi 5086 82.2 -12.7 <-- taban cizgisi %0-10 artti 138 69.6 -7.6 %10-25 artti 295 71.2 -10.3 %25+ artti 326 58.0 -4.7 ``` ### S7 — Bölüm bazında taban medyanı (yazıdaki 10 satırlık karşı örnek tablosu) ```sql -- p havuzu + sira2025/sira2026 dolu; medyan ROW_NUMBER() ile bölüm içinde Sosyal Bilgiler Öğrt. -540 61/61 sikilasti 142225 → 93856 Hukuk -1143 103/111 19503 → 13871 Fizyoterapi -906 155/170 263263 → 221284 İngiliz Dili ve Ed. -1184 76/96 27732 → 24921 Psikoloji -533 104/212 109541 → 106342 Diş Hekimliği -816 46/134 32961 → 33240 (GEVŞEDİ) Bilgisayar Müh. -654 17/202 85914 → 109327 (GEVŞEDİ) Hemşirelik +248 242/258 161155 → 130790 (SIKILAŞTI) Siyaset Bil. ve K.Y. +386 105/111 481293 → 393151 (SIKILAŞTI) Sınıf Öğretmenliği +142 85/86 95313 → 84718 (SIKILAŞTI) ``` Program düzeyindeki iki örnek [D]: - `HACETTEPE ÜNİVERSİTESİ · Diş Hekimliği` — kontenjan 90 → 81, yerleşen 93 → 84, **taban 15.895 → 24.599 (gevşedi)**. - `SİVAS CUMHURİYET ÜNİVERSİTESİ · Hemşirelik` — kontenjan 80 → 90, **taban 191.920 → 151.729 (sıkılaştı)**. ### S8 — YÖK'ün adını verdiği beş programın devlet/vakıf kırılımı ```sql SELECT bolum, SUM(unitur='DEVLET') dn, SUM(CASE WHEN unitur='DEVLET' THEN kontenjan2025 END) dk25, SUM(CASE WHEN unitur='DEVLET' THEN kontenjan2026 END) dk26, SUM(unitur='VAKIF') vn, SUM(CASE WHEN unitur='VAKIF' THEN kontenjan2025 END) vk25, SUM(CASE WHEN unitur='VAKIF' THEN kontenjan2026 END) vk26 FROM p WHERE kontenjan2025 IS NOT NULL AND kontenjan2026 IS NOT NULL AND bolum IN ('Hukuk','Psikoloji','Eczacılık','Diş Hekimliği','Mimarlık') GROUP BY bolum; ``` ``` Hukuk 53 4879→4927 (+48, +%1,0) | 88 4319→3128 (-1191, -%27,6) Psikoloji 78 3497→3550 (+53, +%1,5) | 206 5540→4954 (-586, -%10,6) Diş Hekimliği 79 4185→3762 (-423, -%10,1) | 85 2200→1807 (-393, -%17,9) Eczacılık 36 1773→1600 (-173, -%9,8) | 54 1156→1050 (-106, -%9,2) Mimarlık 69 2740→2590 (-150, -%5,5) | 93 1243→1072 (-171, -%13,8) ``` ### S9 — Diş Hekimliği doluluk (yazıdaki "otomatik değil" argümanı) ```sql SELECT COUNT(*), SUM(kontenjan2026), SUM(yerlesen2026), SUM(yerlesen2026