{"id":44747,"date":"2026-09-17T21:00:31","date_gmt":"2026-09-17T18:00:31","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/sqlde-pencere-fonksiyonlari-veri-analizi-icin-guclu-bir-arac\/"},"modified":"2026-09-17T21:00:31","modified_gmt":"2026-09-17T18:00:31","slug":"sqlde-pencere-fonksiyonlari-veri-analizi-icin-guclu-bir-arac","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/sqlde-pencere-fonksiyonlari-veri-analizi-icin-guclu-bir-arac\/","title":{"rendered":"SQL&#8217;de Pencere Fonksiyonlar\u0131: Veri Analizi \u0130\u00e7in G\u00fc\u00e7l\u00fc Bir Ara\u00e7"},"content":{"rendered":"<h2>SQL&#8217;de Pencere Fonksiyonlar\u0131: Veri Analizi \u0130\u00e7in G\u00fc\u00e7l\u00fc Bir Ara\u00e7<\/h2>\n<p>SQL&#8217;de karma\u015f\u0131k veri analizleri yaparken bazen standart toplama fonksiyonlar\u0131 yetersiz kalabilir. Peki, bir sat\u0131r\u0131n di\u011fer sat\u0131rlarla ili\u015fkisini anlayarak daha derinlemesine i\u00e7g\u00f6r\u00fcler elde etmek m\u00fcmk\u00fcn m\u00fc? \u0130\u015fte bu noktada SQL&#8217;in g\u00fc\u00e7l\u00fc arac\u0131 olan pencere fonksiyonlar\u0131 devreye giriyor. Bu makalede, pencere fonksiyonlar\u0131n\u0131n ne oldu\u011funu, nas\u0131l kullan\u0131ld\u0131\u011f\u0131n\u0131 ve ger\u00e7ek d\u00fcnya senaryolar\u0131nda nas\u0131l fark yaratt\u0131\u011f\u0131n\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz.<\/p>\n<h2>Pencere Fonksiyonlar\u0131 Nedir ve Neden \u00d6nemlidir?<\/h2>\n<p>Pencere fonksiyonlar\u0131 (window functions), SQL&#8217;de sat\u0131r gruplar\u0131 \u00fczerinde hesaplamalar yapmam\u0131z\u0131 sa\u011flayan \u00f6zel bir fonksiyondur. Standart toplama fonksiyonlar\u0131ndan (SUM, AVG, COUNT vb.) en b\u00fcy\u00fck fark\u0131, bu fonksiyonlar\u0131n bir sat\u0131r\u0131n de\u011ferini, kendi grubundaki di\u011fer sat\u0131rlar\u0131n de\u011ferlerine g\u00f6re hesaplamas\u0131d\u0131r. Ancak bu hesaplama s\u0131ras\u0131nda, pencere fonksiyonlar\u0131 orijinal sat\u0131rlar\u0131 k\u00fcmelemez veya tek bir \u00f6zet sat\u0131ra indirgemez. Yani, her sat\u0131r kendi orijinal verisiyle birlikte, pencere fonksiyonunun hesaplad\u0131\u011f\u0131 yeni bir s\u00fctuna sahip olur. Bu, veriyi kaybetmeden ek bilgiler elde etmemizi sa\u011flar ki bu da veri analizi i\u00e7in inan\u0131lmaz derecede de\u011ferlidir. D\u00fc\u015f\u00fcn\u00fcn ki bir \u015firketin sat\u0131\u015f verilerini inceliyorsunuz. Sadece toplam sat\u0131\u015flar\u0131 g\u00f6rmek yerine, her bir sat\u0131\u015f\u0131n, o aya ait toplam sat\u0131\u015f i\u00e7indeki pay\u0131n\u0131 veya o y\u0131l\u0131n ortalama sat\u0131\u015f\u0131n\u0131 g\u00f6rmek isteyebilirsiniz. \u0130\u015fte pencere fonksiyonlar\u0131 tam da bu t\u00fcr senaryolar i\u00e7in tasarlanm\u0131\u015ft\u0131r.<\/p>\n<p>Geleneksel SQL sorgular\u0131nda, bir sat\u0131r\u0131n di\u011fer sat\u0131rlarla ili\u015fkisini anlamak i\u00e7in genellikle self-join (kendini birle\u015ftirme) veya alt sorgular kullan\u0131l\u0131rd\u0131. Bu y\u00f6ntemler karma\u015f\u0131k sorgulara yol a\u00e7abilir, performans\u0131 d\u00fc\u015f\u00fcrebilir ve okunabilirli\u011fi azaltabilir. Pencere fonksiyonlar\u0131 ise bu karma\u015f\u0131kl\u0131\u011f\u0131 ortadan kald\u0131rarak, daha temiz, daha anla\u015f\u0131l\u0131r ve daha performansl\u0131 sorgular yazmam\u0131za olanak tan\u0131r. \u00d6zellikle b\u00fcy\u00fck veri k\u00fcmeleriyle \u00e7al\u0131\u015f\u0131rken, performans art\u0131\u015f\u0131 g\u00f6z ard\u0131 edilemez bir avantajd\u0131r. Bu fonksiyonlar, SQL&#8217;in sadece veri \u00e7ekme ve temel i\u015flemler yapma yetene\u011finin \u00f6tesine ge\u00e7erek, geli\u015fmi\u015f analitik yetenekler kazand\u0131rmas\u0131n\u0131 sa\u011flar. Veri bilimcileri, analistler ve veritaban\u0131 y\u00f6neticileri i\u00e7in pencere fonksiyonlar\u0131, veri setlerinden anlaml\u0131 bilgiler \u00e7\u0131karmak ad\u0131na vazge\u00e7ilmez bir ara\u00e7 haline gelmi\u015ftir. Bu fonksiyonlar, veriyi daha ba\u011flamsal bir \u015fekilde anlamam\u0131za yard\u0131mc\u0131 olur ve bu da daha bilin\u00e7li i\u015f kararlar\u0131 al\u0131nmas\u0131na zemin haz\u0131rlar. K\u0131sacas\u0131, pencere fonksiyonlar\u0131, SQL&#8217;i daha ak\u0131ll\u0131 ve daha yetenekli bir analiz arac\u0131na d\u00f6n\u00fc\u015ft\u00fcr\u00fcr.<\/p>\n<h2>Pencere Fonksiyonlar\u0131n\u0131n Temel Bile\u015fenleri: OVER, PARTITION BY, ORDER BY<\/h2>\n<p>Bir pencere fonksiyonunun temelini olu\u015fturan \u00fc\u00e7 anahtar kelime vard\u0131r: <code>OVER<\/code>, <code>PARTITION BY<\/code> ve <code>ORDER BY<\/code>. Bu \u00fc\u00e7l\u00fc, pencere fonksiyonunun hangi sat\u0131rlar \u00fczerinde \u00e7al\u0131\u015faca\u011f\u0131n\u0131 ve bu sat\u0131rlar\u0131n nas\u0131l grupland\u0131r\u0131l\u0131p s\u0131ralanaca\u011f\u0131n\u0131 belirler. <code>OVER<\/code> anahtar kelimesi, fonksiyonun bir pencere fonksiyonu oldu\u011funu belirtir ve devam\u0131nda gelen b\u00f6l\u00fcmleme (partitioning) ve s\u0131ralama (ordering) se\u00e7eneklerini tan\u0131mlar. <code>PARTITION BY<\/code>, veriyi mant\u0131ksal gruplara ay\u0131rmak i\u00e7in kullan\u0131l\u0131r. \u00d6rne\u011fin, sat\u0131\u015f verilerinde her bir \u00fcr\u00fcn kategorisi i\u00e7in ayr\u0131 ayr\u0131 hesaplamalar yapmak istedi\u011fimizde, <code>PARTITION BY kategori_adi<\/code> kullanabiliriz. Bu, her bir kategori i\u00e7in ayr\u0131 bir pencere olu\u015fturulmas\u0131n\u0131 sa\u011flar. <code>ORDER BY<\/code> ise, her bir pencere i\u00e7indeki sat\u0131rlar\u0131n belirli bir s\u0131raya g\u00f6re dizilmesini sa\u011flar. Bu s\u0131ralama, \u00f6zellikle s\u0131ral\u0131 hesaplamalar gerektiren fonksiyonlar i\u00e7in kritiktir. \u00d6rne\u011fin, bir ay\u0131n sat\u0131\u015flar\u0131n\u0131, o aya ait \u00f6nceki aylar\u0131n sat\u0131\u015flar\u0131na g\u00f6re hesaplamak istedi\u011fimizde, <code>ORDER BY ay_numarasi<\/code> kullan\u0131r\u0131z. Bu s\u0131ralama, fonksiyonun hangi sat\u0131rdan ba\u015flay\u0131p hangi sat\u0131ra kadar ilerleyece\u011fini belirler.<\/p>\n<p>Bu \u00fc\u00e7 bile\u015fenin birlikte kullan\u0131m\u0131, pencere fonksiyonlar\u0131na inan\u0131lmaz bir esneklik kazand\u0131r\u0131r. <code>OVER ()<\/code> ifadesi, pencerenin t\u00fcm tabloyu kapsad\u0131\u011f\u0131n\u0131 belirtirken, <code>OVER (PARTITION BY ...)<\/code> belirli s\u00fctunlara g\u00f6re gruplanm\u0131\u015f pencereler olu\u015fturur. <code>OVER (ORDER BY ...)<\/code> ise, her pencere i\u00e7indeki sat\u0131rlar\u0131 belirli bir d\u00fczene sokar. En g\u00fc\u00e7l\u00fc kombinasyon ise <code>OVER (PARTITION BY ... ORDER BY ...)<\/code> \u015feklindedir. Bu, veriyi hem gruplara ay\u0131r\u0131r hem de her grup i\u00e7indeki sat\u0131rlar\u0131 s\u0131ralayarak, \u00e7ok daha geli\u015fmi\u015f analizler yapmam\u0131z\u0131 sa\u011flar. \u00d6rne\u011fin, bir e-ticaret sitesinde her bir kullan\u0131c\u0131n\u0131n zaman i\u00e7indeki harcama e\u011filimini analiz etmek istedi\u011fimizde, \u00f6nce kullan\u0131c\u0131ya g\u00f6re b\u00f6l\u00fcmleme (<code>PARTITION BY kullanici_id<\/code>) yapar\u0131z, ard\u0131ndan her kullan\u0131c\u0131n\u0131n harcamalar\u0131n\u0131 zamana g\u00f6re s\u0131ralar\u0131z (<code>ORDER BY siparis_tarihi<\/code>). Bu sayede, her kullan\u0131c\u0131n\u0131n kendi harcama ge\u00e7mi\u015findeki konumunu anlayabiliriz. Bu bile\u015fenlerin do\u011fru kullan\u0131m\u0131, SQL sorgular\u0131n\u0131n g\u00fcc\u00fcn\u00fc kat kat art\u0131r\u0131r ve karma\u015f\u0131k veri problemlerine zarif \u00e7\u00f6z\u00fcmler sunar.<\/p>\n<h2>Yayg\u0131n Pencere Fonksiyonlar\u0131 ve Kullan\u0131m Alanlar\u0131<\/h2>\n<p>SQL&#8217;de bir\u00e7ok farkl\u0131 pencere fonksiyonu bulunmaktad\u0131r. Bunlardan en s\u0131k kullan\u0131lanlar\u0131 \u015funlard\u0131r:<\/p>\n<ul>\n<li>\n<h3><code>ROW_NUMBER()<\/code>, <code>RANK()<\/code>, <code>DENSE_RANK()<\/code><\/h3>\n<p>Bu fonksiyonlar, bir pencere i\u00e7indeki sat\u0131rlara benzersiz bir s\u0131ra numaras\u0131 atamak i\u00e7in kullan\u0131l\u0131r. <code>ROW_NUMBER()<\/code> her sat\u0131ra benzersiz bir numara verir. <code>RANK()<\/code>, ayn\u0131 de\u011fere sahip sat\u0131rlara ayn\u0131 s\u0131ray\u0131 verir ve sonraki s\u0131ralama numaras\u0131n\u0131 atlar. <code>DENSE_RANK()<\/code> ise ayn\u0131 de\u011fere sahip sat\u0131rlara ayn\u0131 s\u0131ray\u0131 verir ancak sonraki s\u0131ralama numaras\u0131n\u0131 atlamaz. Bu fonksiyonlar, s\u0131ralamada belirli bir s\u0131radaki veriyi \u00e7ekmek, en y\u00fcksek veya en d\u00fc\u015f\u00fck N de\u011feri alan kay\u0131tlar\u0131 bulmak i\u00e7in kullan\u0131l\u0131r. \u00d6rne\u011fin, her bir departmandaki en y\u00fcksek maa\u015fl\u0131 3 \u00e7al\u0131\u015fan\u0131 listelemek i\u00e7in bu fonksiyonlar\u0131 kullanabiliriz.<\/p>\n<p>Bir \u00f6rnek d\u00fc\u015f\u00fcnelim: Bir \u00f6\u011frenci notlar\u0131 tablosunda, her \u00f6\u011frencinin her ders i\u00e7in ald\u0131\u011f\u0131 notlar\u0131 s\u0131ralamak ve en y\u00fcksek notu alan ilk 3 \u00f6\u011frenciyi g\u00f6rmek isteyebiliriz. <code>PARTITION BY ders_adi ORDER BY notu DESC<\/code> ile her ders i\u00e7in notlar\u0131 b\u00fcy\u00fckten k\u00fc\u00e7\u00fc\u011fe s\u0131ralar\u0131z ve ard\u0131ndan <code>RANK()<\/code> veya <code>DENSE_RANK()<\/code> kullanarak ilk 3&#8217;\u00fc belirleyebiliriz. Bu, \u00f6\u011fretmenlerin \u00f6\u011frencilerin ba\u015far\u0131 durumunu daha iyi analiz etmelerine yard\u0131mc\u0131 olur.<\/p>\n<\/li>\n<li>\n<h3><code>LAG()<\/code> ve <code>LEAD()<\/code><\/h3>\n<p>Bu fonksiyonlar, bir pencere i\u00e7indeki mevcut sat\u0131rdan \u00f6nceki (<code>LAG<\/code>) veya sonraki (<code>LEAD<\/code>) sat\u0131r\u0131n de\u011ferine eri\u015fmek i\u00e7in kullan\u0131l\u0131r. Bu, zaman serisi verilerinde de\u011fi\u015fimleri, b\u00fcy\u00fcme oranlar\u0131n\u0131 veya \u00f6nceki\/sonraki d\u00f6neme ait de\u011ferleri kar\u015f\u0131la\u015ft\u0131rmak i\u00e7in olduk\u00e7a kullan\u0131\u015fl\u0131d\u0131r. \u00d6rne\u011fin, ayl\u0131k sat\u0131\u015f verilerinde, her ay\u0131n sat\u0131\u015f\u0131n\u0131 bir \u00f6nceki aya g\u00f6re ne kadar artt\u0131\u011f\u0131n\u0131 veya azald\u0131\u011f\u0131n\u0131 g\u00f6rmek i\u00e7in <code>LAG(aylik_satis, 1, 0) OVER (ORDER BY ay)<\/code> \u015feklinde bir ifade kullanabiliriz. Buradaki <code>1<\/code>, bir \u00f6nceki sat\u0131ra bak\u0131laca\u011f\u0131n\u0131, <code>0<\/code> ise e\u011fer \u00f6nceki sat\u0131r yoksa (ilk sat\u0131r) varsay\u0131lan de\u011ferin 0 olaca\u011f\u0131n\u0131 belirtir.<\/p>\n<p>Bir ba\u015fka senaryo: Bir web sitesinin g\u00fcnl\u00fck ziyaret\u00e7i say\u0131lar\u0131n\u0131 analiz ederken, bir g\u00fcn \u00f6nceki ziyaret\u00e7i say\u0131s\u0131n\u0131 veya bir sonraki g\u00fcn\u00fcn ziyaret\u00e7i say\u0131s\u0131n\u0131 g\u00f6rmek isteyebiliriz. <code>LAG(ziyaretci_sayisi, 1, 0) OVER (ORDER BY tarih)<\/code> ile bir \u00f6nceki g\u00fcn\u00fcn ziyaret\u00e7i say\u0131s\u0131n\u0131, <code>LEAD(ziyaretci_sayisi, 1, 0) OVER (ORDER BY tarih)<\/code> ile de bir sonraki g\u00fcn\u00fcn ziyaret\u00e7i say\u0131s\u0131n\u0131 kolayca elde edebiliriz. Bu, ziyaret\u00e7i trafi\u011findeki ani de\u011fi\u015fimleri veya e\u011filimleri tespit etmek i\u00e7in \u00f6nemlidir.<\/p>\n<\/li>\n<li>\n<h3><code>SUM()<\/code>, <code>AVG()<\/code>, <code>COUNT()<\/code> (Pencere Fonksiyonu Olarak)<\/h3>\n<p>Bu standart toplama fonksiyonlar\u0131, pencere fonksiyonlar\u0131 ile birlikte kullan\u0131ld\u0131\u011f\u0131nda \u00e7ok daha g\u00fc\u00e7l\u00fc hale gelir. \u00d6rne\u011fin, <code>SUM(satis_tutari) OVER (PARTITION BY urun_kategorisi)<\/code>, her bir \u00fcr\u00fcn kategorisinin toplam sat\u0131\u015f tutar\u0131n\u0131, her \u00fcr\u00fcn sat\u0131r\u0131 i\u00e7in ayr\u0131 ayr\u0131 g\u00f6sterir. Bu, her bir sat\u0131\u015f\u0131n kendi kategorisinin toplam sat\u0131\u015f\u0131na ne kadar katk\u0131da bulundu\u011funu g\u00f6rmemizi sa\u011flar. Ayn\u0131 \u015fekilde, <code>AVG(fiyat) OVER (PARTITION BY magaza_adi)<\/code>, her bir ma\u011fazan\u0131n ortalama \u00fcr\u00fcn fiyat\u0131n\u0131 t\u00fcm \u00fcr\u00fcn sat\u0131rlar\u0131 i\u00e7in hesaplar.<\/p>\n<p>Bu fonksiyonlar\u0131n bir di\u011fer \u00f6nemli kullan\u0131m\u0131 da k\u00fcm\u00fclatif toplamlar (cumulative sums) hesaplamakt\u0131r. \u00d6rne\u011fin, bir projenin maliyetlerini zaman i\u00e7inde takip ederken, her bir harcama kaleminin toplam proje maliyetine k\u00fcm\u00fclatif etkisini g\u00f6rmek i\u00e7in <code>SUM(harcama) OVER (ORDER BY harcama_tarihi)<\/code> ifadesini kullanabiliriz. Bu, projenin b\u00fct\u00e7e takibini \u00e7ok daha \u015feffaf hale getirir.<\/p>\n<\/li>\n<\/ul>\n<h2>Ger\u00e7ek D\u00fcnya Senaryolar\u0131 ve Vaka Analizleri<\/h2>\n<p>Pencere fonksiyonlar\u0131n\u0131n g\u00fcc\u00fcn\u00fc en iyi \u015fekilde anlamak i\u00e7in ger\u00e7ek d\u00fcnya senaryolar\u0131na g\u00f6z atal\u0131m.<\/p>\n<h3>Vaka Analizi 1: E-Ticaret Sat\u0131\u015f Analizi<\/h3>\n<p>Bir e-ticaret \u015firketi, sat\u0131\u015f verilerini analiz ederek en pop\u00fcler \u00fcr\u00fcnleri, en \u00e7ok gelir getiren kategorileri ve her bir \u00fcr\u00fcn\u00fcn kendi kategorisindeki sat\u0131\u015f pay\u0131n\u0131 anlamak istiyor. A\u015fa\u011f\u0131daki gibi bir <code>satislar<\/code> tablosu oldu\u011funu varsayal\u0131m:<\/p>\n<table>\n<thead>\n<tr>\n<th>siparis_id<\/th>\n<th>urun_adi<\/th>\n<th>kategori<\/th>\n<th>satis_tutari<\/th>\n<th>siparis_tarihi<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>101<\/td>\n<td>Laptop X<\/td>\n<td>Elektronik<\/td>\n<td>1200<\/td>\n<td>2023-01-15<\/td>\n<\/tr>\n<tr>\n<td>102<\/td>\n<td>Klavye Y<\/td>\n<td>Elektronik<\/td>\n<td>75<\/td>\n<td>2023-01-16<\/td>\n<\/tr>\n<tr>\n<td>103<\/td>\n<td>Ti\u015f\u00f6rt Z<\/td>\n<td>Giyim<\/td>\n<td>30<\/td>\n<td>2023-01-17<\/td>\n<\/tr>\n<tr>\n<td>104<\/td>\n<td>Pantolon A<\/td>\n<td>Giyim<\/td>\n<td>50<\/td>\n<td>2023-01-18<\/td>\n<\/tr>\n<tr>\n<td>105<\/td>\n<td>Tablet B<\/td>\n<td>Elektronik<\/td>\n<td>300<\/td>\n<td>2023-01-19<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Bu verilerle, her bir sat\u0131\u015f\u0131n kendi kategorisindeki toplam sat\u0131\u015f i\u00e7indeki pay\u0131n\u0131 hesaplamak i\u00e7in a\u015fa\u011f\u0131daki sorguyu kullanabiliriz:<\/p>\n<pre>\n  <code>\nSELECT\n    siparis_id,\n    urun_adi,\n    kategori,\n    satis_tutari,\n    siparis_tarihi,\n    SUM(satis_tutari) OVER (PARTITION BY kategori) AS kategori_toplam_satis,\n    (satis_tutari * 100.0 \/ SUM(satis_tutari) OVER (PARTITION BY kategori)) AS kategori_satis_payi\nFROM\n    satislar;\n  <\/code>\n  <\/pre>\n<p>Bu sorgu, her bir sat\u0131\u015f sat\u0131r\u0131 i\u00e7in hem ait oldu\u011fu kategorinin toplam sat\u0131\u015f\u0131n\u0131 (<code>kategori_toplam_satis<\/code>) hem de o sat\u0131\u015f\u0131n kategorinin toplam sat\u0131\u015f\u0131na oran\u0131n\u0131 (<code>kategori_satis_payi<\/code>) hesaplayacakt\u0131r. Bu bilgi, pazarlama stratejilerini belirlemede, hangi kategorilere daha fazla odaklan\u0131lmas\u0131 gerekti\u011fini anlamada ve \u00fcr\u00fcn performans\u0131n\u0131 de\u011ferlendirmede kritik rol oynar. \u00d6rne\u011fin, Giyim kategorisinde Ti\u015f\u00f6rt Z&#8217;nin sat\u0131\u015f\u0131 30 TL iken, Giyim kategorisinin toplam sat\u0131\u015f\u0131 80 TL ise, Ti\u015f\u00f6rt Z&#8217;nin pay\u0131 yakla\u015f\u0131k %37.5 olacakt\u0131r. Bu t\u00fcr detayl\u0131 analizler, sadece toplam sat\u0131\u015f rakamlar\u0131na bakarak elde edilemez.<\/p>\n<h3>Vaka Analizi 2: \u00c7al\u0131\u015fan Performans De\u011ferlendirmesi<\/h3>\n<p>Bir insan kaynaklar\u0131 departman\u0131, \u00e7al\u0131\u015fanlar\u0131n\u0131n maa\u015flar\u0131n\u0131 ve performanslar\u0131n\u0131 analiz ederek, departman ortalamas\u0131na g\u00f6re maa\u015f s\u0131ralamas\u0131 yapmak ve her \u00e7al\u0131\u015fan\u0131n kendi departman\u0131ndaki maa\u015f s\u0131ralamas\u0131n\u0131 g\u00f6rmek istiyor. A\u015fa\u011f\u0131daki gibi bir <code>calisanlar<\/code> tablosu oldu\u011funu varsayal\u0131m:<\/p>\n<table>\n<thead>\n<tr>\n<th>calisan_id<\/th>\n<th>ad_soyad<\/th>\n<th>departman<\/th>\n<th>maas<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>1<\/td>\n<td>Ali Y\u0131lmaz<\/td>\n<td>Sat\u0131\u015f<\/td>\n<td>5000<\/td>\n<\/tr>\n<tr>\n<td>2<\/td>\n<td>Ay\u015fe Demir<\/td>\n<td>Sat\u0131\u015f<\/td>\n<td>5500<\/td>\n<\/tr>\n<tr>\n<td>3<\/td>\n<td>Mehmet Kaya<\/td>\n<td>Pazarlama<\/td>\n<td>4800<\/td>\n<\/tr>\n<tr>\n<td>4<\/td>\n<td>Fatma \u00c7elik<\/td>\n<td>Sat\u0131\u015f<\/td>\n<td>5200<\/td>\n<\/tr>\n<tr>\n<td>5<\/td>\n<td>Hasan Acar<\/td>\n<td>Pazarlama<\/td>\n<td>4500<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Bu senaryoda, her \u00e7al\u0131\u015fan\u0131n kendi departman\u0131ndaki maa\u015f s\u0131ralamas\u0131n\u0131 ve s\u0131ralamadaki yerini belirlemek i\u00e7in <code>RANK()<\/code> fonksiyonunu kullanabiliriz:<\/p>\n<pre>\n  <code>\nSELECT\n    calisan_id,\n    ad_soyad,\n    departman,\n    maas,\n    RANK() OVER (PARTITION BY departman ORDER BY maas DESC) AS departman_maas_siralamasi\nFROM\n    calisanlar;\n  <\/code>\n  <\/pre>\n<p>Bu sorgu, her \u00e7al\u0131\u015fan\u0131n kendi departman\u0131 i\u00e7indeki maa\u015f s\u0131ralamas\u0131n\u0131 (en y\u00fcksek maa\u015f 1. s\u0131rada olacak \u015fekilde) g\u00f6sterecektir. \u00d6rne\u011fin, Sat\u0131\u015f departman\u0131nda Ali Y\u0131lmaz (5000 TL) 3. s\u0131rada, Ay\u015fe Demir (5500 TL) 1. s\u0131rada, Fatma \u00c7elik (5200 TL) ise 2. s\u0131rada yer alacakt\u0131r. Bu, y\u00f6neticilerin departmanlar\u0131ndaki maa\u015f da\u011f\u0131l\u0131m\u0131n\u0131 ve potansiyel e\u015fitsizlikleri daha iyi anlamalar\u0131na yard\u0131mc\u0131 olur. Hatta, <code>DENSE_RANK()<\/code> kullanarak ayn\u0131 maa\u015fa sahip \u00e7al\u0131\u015fanlar\u0131n s\u0131ralamas\u0131n\u0131 nas\u0131l etkiledi\u011fini de g\u00f6zlemleyebiliriz. Bu t\u00fcr analizler, adil \u00fccretlendirme politikalar\u0131 olu\u015fturmada ve performans bazl\u0131 prim sistemlerini tasarlamada temel olu\u015fturur.<\/p>\n<h2>\u0130leri D\u00fczey Teknikler ve Optimizasyon<\/h2>\n<p>Pencere fonksiyonlar\u0131 ile \u00e7al\u0131\u015f\u0131rken performans ve esnekli\u011fi art\u0131rmak i\u00e7in baz\u0131 ileri d\u00fczey teknikler mevcuttur. Bunlardan biri, pencere \u00e7er\u00e7evelerini (window frames) daha hassas bir \u015fekilde tan\u0131mlamakt\u0131r. Varsay\u0131lan olarak, bir pencere fonksiyonu, <code>OVER (PARTITION BY ... ORDER BY ...)` ifadesinde belirtilen sat\u0131rlar\u0131 kapsar. Ancak, <code>ROWS BETWEEN ... AND ...<\/code> veya <code>RANGE BETWEEN ... AND ...<\/code> gibi ifadelerle pencere \u00e7er\u00e7evesini daha daraltabiliriz. \u00d6rne\u011fin, bir hareketli ortalama (moving average) hesaplarken, sadece son 3 sat\u0131r\u0131 dikkate almak isteyebiliriz. Bu durumda, <code>AVG(deger) OVER (ORDER BY zaman ROWS BETWEEN 2 PRECEDING AND CURRENT ROW)<\/code> gibi bir ifade kullanabiliriz. Bu, her sat\u0131r i\u00e7in sadece kendisi ve ondan \u00f6nceki iki sat\u0131r\u0131n ortalamas\u0131n\u0131 hesaplar.<\/p>\n<p>Ba\u015fka bir ileri d\u00fczey konu ise, pencere fonksiyonlar\u0131n\u0131n i\u00e7 i\u00e7e (nested) kullan\u0131lmas\u0131d\u0131r. Bir pencere fonksiyonunun sonucunu ba\u015fka bir pencere fonksiyonunun girdisi olarak kullanmak m\u00fcmk\u00fcnd\u00fcr. \u00d6rne\u011fin, \u00f6nce her departman\u0131n toplam sat\u0131\u015f\u0131n\u0131 hesaplayan bir pencere fonksiyonu kullan\u0131p, ard\u0131ndan bu toplam sat\u0131\u015flar\u0131n genel toplam i\u00e7indeki pay\u0131n\u0131 hesaplayan ba\u015fka bir pencere fonksiyonu kullanabilirsiniz. Bu, karma\u015f\u0131k analizlerin tek bir sorguda birle\u015ftirilmesini sa\u011flar. Ancak, i\u00e7 i\u00e7e pencere fonksiyonlar\u0131 sorguyu karma\u015f\u0131kla\u015ft\u0131rabilir ve performans sorunlar\u0131na yol a\u00e7abilir, bu nedenle dikkatli kullan\u0131lmal\u0131d\u0131r. Performans optimizasyonu a\u00e7\u0131s\u0131ndan, pencere fonksiyonlar\u0131n\u0131n do\u011fru indekslerle desteklenmesi de \u00f6nemlidir. \u00d6zellikle <code>PARTITION BY<\/code> ve <code>ORDER BY<\/code> ifadelerinde kullan\u0131lan s\u00fctunlar \u00fczerinde indeksler olu\u015fturmak, sorgu y\u00fcr\u00fctme s\u00fcresini \u00f6nemli \u00f6l\u00e7\u00fcde azaltabilir. Veritaban\u0131 y\u00f6netim sistemleri (DBMS), pencere fonksiyonlar\u0131 i\u00e7in \u00f6zel optimizasyonlar yapabilir, bu nedenle kulland\u0131\u011f\u0131n\u0131z veritaban\u0131n\u0131n dok\u00fcmantasyonunu incelemek faydal\u0131 olacakt\u0131r.<\/p>\n<h2>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h2>\n<ul>\n<li>\n<h3>Pencere fonksiyonlar\u0131 ile toplama fonksiyonlar\u0131 aras\u0131ndaki temel fark nedir?<\/h3>\n<p>Temel fark, pencere fonksiyonlar\u0131n\u0131n sat\u0131rlar\u0131 k\u00fcmelememesi ve her sat\u0131r\u0131n orijinal verisini koruyarak ek hesaplanm\u0131\u015f s\u00fctunlar eklemesidir. Toplama fonksiyonlar\u0131 ise genellikle sat\u0131rlar\u0131 gruplay\u0131p tek bir \u00f6zet sonu\u00e7 \u00fcretir.<\/p>\n<\/li>\n<li>\n<h3>Her SQL veritaban\u0131 pencere fonksiyonlar\u0131n\u0131 destekler mi?<\/h3>\n<p>Modern SQL veritabanlar\u0131n\u0131n \u00e7o\u011fu (PostgreSQL, MySQL 8+, SQL Server, Oracle vb.) pencere fonksiyonlar\u0131n\u0131 desteklemektedir. Ancak, desteklenen fonksiyonlar ve s\u00f6zdizimi s\u00fcr\u00fcmler aras\u0131nda k\u00fc\u00e7\u00fck farkl\u0131l\u0131klar g\u00f6sterebilir.<\/p>\n<\/li>\n<li>\n<h3>Pencere fonksiyonlar\u0131 performans\u0131 nas\u0131l etkiler?<\/h3>\n<p>Do\u011fru kullan\u0131ld\u0131\u011f\u0131nda, pencere fonksiyonlar\u0131 self-join veya alt sorgulara g\u00f6re daha performansl\u0131 olabilir. Ancak, karma\u015f\u0131k ve optimize edilmemi\u015f sorgular performans\u0131 olumsuz etkileyebilir. \u0130ndeksleme ve dikkatli sorgu tasar\u0131m\u0131 \u00f6nemlidir.<\/p>\n<\/li>\n<li>\n<h3><code>RANK()<\/code> ve <code>DENSE_RANK()<\/code> aras\u0131ndaki fark nedir?<\/h3>\n<p><code>RANK()<\/code>, ayn\u0131 de\u011fere sahip sat\u0131rlara ayn\u0131 s\u0131ray\u0131 verir ve sonraki s\u0131ralama numaras\u0131n\u0131 atlar (\u00f6rne\u011fin, 1, 1, 3). <code>DENSE_RANK()<\/code> ise ayn\u0131 de\u011fere sahip sat\u0131rlara ayn\u0131 s\u0131ray\u0131 verir ancak sonraki s\u0131ralama numaras\u0131n\u0131 atlamaz (\u00f6rne\u011fin, 1, 1, 2).<\/p>\n<\/li>\n<\/ul>\n<h2>Sonu\u00e7<\/h2>\n<p>SQL pencere fonksiyonlar\u0131, veri analizi d\u00fcnyas\u0131nda devrim yaratm\u0131\u015f g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r. Sat\u0131rlar\u0131 k\u00fcmelemeden ba\u011flamsal hesaplamalar yapma yetenekleri sayesinde, karma\u015f\u0131k veri ili\u015fkilerini anlamak, trendleri belirlemek ve daha derinlemesine i\u00e7g\u00f6r\u00fcler elde etmek art\u0131k \u00e7ok daha kolay. <code>OVER<\/code>, <code>PARTITION BY<\/code> ve <code>ORDER BY<\/code> bile\u015fenlerini do\u011fru kullanarak, <code>ROW_NUMBER()<\/code>, <code>LAG()<\/code>, <code>SUM()<\/code> gibi fonksiyonlarla verilerinizi bamba\u015fka bir boyutta analiz edebilirsiniz. \u0130ster bir e-ticaret sitesinin sat\u0131\u015flar\u0131n\u0131 analiz edin, ister bir \u015firketin \u00e7al\u0131\u015fan performans\u0131n\u0131 de\u011ferlendirin, pencere fonksiyonlar\u0131 size verilerinizden maksimum de\u011feri \u00e7\u0131karman\u0131z i\u00e7in gereken esnekli\u011fi ve g\u00fcc\u00fc sunar. Bu makalede ele ald\u0131\u011f\u0131m\u0131z temel kavramlar ve vaka analizleri ile siz de SQL'deki pencere fonksiyonlar\u0131n\u0131n potansiyelini ke\u015ffetmeye ba\u015flayabilirsiniz. Unutmay\u0131n, veri analizindeki ustal\u0131k, do\u011fru ara\u00e7lar\u0131 etkili bir \u015fekilde kullanmaktan ge\u00e7er ve pencere fonksiyonlar\u0131 bu ara\u00e7lar\u0131n ba\u015f\u0131nda gelir.<\/p>\n<p>#SQL #VeriAnalizi #PencereFonksiyonlari #Veritaban\u0131 #Programlama<\/p>\n","protected":false},"excerpt":{"rendered":"SQL&#8217;de karma\u015f\u0131k veri analizleri yaparken bazen standart toplama fonksiyonlar\u0131 yetersiz kalabilir.","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1505],"tags":[],"class_list":{"0":"post-44747","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-sql-2","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>SQL&#039;de Pencere Fonksiyonlar\u0131: Veri Analizi \u0130\u00e7in G\u00fc\u00e7l\u00fc Bir Ara\u00e7 - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/sqlde-pencere-fonksiyonlari-veri-analizi-icin-guclu-bir-arac\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SQL&#039;de Pencere Fonksiyonlar\u0131: Veri Analizi \u0130\u00e7in G\u00fc\u00e7l\u00fc Bir Ara\u00e7\" \/>\n<meta property=\"og:description\" content=\"SQL&#039;de karma\u015f\u0131k veri analizleri yaparken bazen standart toplama fonksiyonlar\u0131 yetersiz kalabilir.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/sqlde-pencere-fonksiyonlari-veri-analizi-icin-guclu-bir-arac\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-17T18:00:31+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sqlde-pencere-fonksiyonlari-veri-analizi-icin-guclu-bir-arac\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sqlde-pencere-fonksiyonlari-veri-analizi-icin-guclu-bir-arac\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"SQL&#8217;de Pencere Fonksiyonlar\u0131: Veri Analizi \u0130\u00e7in G\u00fc\u00e7l\u00fc Bir Ara\u00e7\",\"datePublished\":\"2026-09-17T18:00:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sqlde-pencere-fonksiyonlari-veri-analizi-icin-guclu-bir-arac\/\"},\"wordCount\":2368,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"SQL\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/sqlde-pencere-fonksiyonlari-veri-analizi-icin-guclu-bir-arac\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sqlde-pencere-fonksiyonlari-veri-analizi-icin-guclu-bir-arac\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/sqlde-pencere-fonksiyonlari-veri-analizi-icin-guclu-bir-arac\/\",\"name\":\"SQL'de Pencere Fonksiyonlar\u0131: Veri Analizi \u0130\u00e7in G\u00fc\u00e7l\u00fc Bir Ara\u00e7 - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-09-17T18:00:31+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sqlde-pencere-fonksiyonlari-veri-analizi-icin-guclu-bir-arac\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/sqlde-pencere-fonksiyonlari-veri-analizi-icin-guclu-bir-arac\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sqlde-pencere-fonksiyonlari-veri-analizi-icin-guclu-bir-arac\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SQL&#8217;de Pencere Fonksiyonlar\u0131: Veri Analizi \u0130\u00e7in G\u00fc\u00e7l\u00fc Bir Ara\u00e7\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"SQL'de Pencere Fonksiyonlar\u0131: Veri Analizi \u0130\u00e7in G\u00fc\u00e7l\u00fc Bir Ara\u00e7 - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/sqlde-pencere-fonksiyonlari-veri-analizi-icin-guclu-bir-arac\/","og_locale":"tr_TR","og_type":"article","og_title":"SQL'de Pencere Fonksiyonlar\u0131: Veri Analizi \u0130\u00e7in G\u00fc\u00e7l\u00fc Bir Ara\u00e7","og_description":"SQL'de karma\u015f\u0131k veri analizleri yaparken bazen standart toplama fonksiyonlar\u0131 yetersiz kalabilir.","og_url":"https:\/\/fatihsoysal.com\/blog\/sqlde-pencere-fonksiyonlari-veri-analizi-icin-guclu-bir-arac\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-09-17T18:00:31+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"13 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/sqlde-pencere-fonksiyonlari-veri-analizi-icin-guclu-bir-arac\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/sqlde-pencere-fonksiyonlari-veri-analizi-icin-guclu-bir-arac\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"SQL&#8217;de Pencere Fonksiyonlar\u0131: Veri Analizi \u0130\u00e7in G\u00fc\u00e7l\u00fc Bir Ara\u00e7","datePublished":"2026-09-17T18:00:31+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/sqlde-pencere-fonksiyonlari-veri-analizi-icin-guclu-bir-arac\/"},"wordCount":2368,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["SQL"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/sqlde-pencere-fonksiyonlari-veri-analizi-icin-guclu-bir-arac\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/sqlde-pencere-fonksiyonlari-veri-analizi-icin-guclu-bir-arac\/","url":"https:\/\/fatihsoysal.com\/blog\/sqlde-pencere-fonksiyonlari-veri-analizi-icin-guclu-bir-arac\/","name":"SQL'de Pencere Fonksiyonlar\u0131: Veri Analizi \u0130\u00e7in G\u00fc\u00e7l\u00fc Bir Ara\u00e7 - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-09-17T18:00:31+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/sqlde-pencere-fonksiyonlari-veri-analizi-icin-guclu-bir-arac\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/sqlde-pencere-fonksiyonlari-veri-analizi-icin-guclu-bir-arac\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/sqlde-pencere-fonksiyonlari-veri-analizi-icin-guclu-bir-arac\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"SQL&#8217;de Pencere Fonksiyonlar\u0131: Veri Analizi \u0130\u00e7in G\u00fc\u00e7l\u00fc Bir Ara\u00e7"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/44747","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=44747"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/44747\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=44747"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=44747"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=44747"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}