{"id":25866,"date":"2025-07-14T21:15:29","date_gmt":"2025-07-14T18:15:29","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-gruplar-icinde-lag-fonksiyonunun-kullanimi\/"},"modified":"2025-07-14T21:15:29","modified_gmt":"2025-07-14T18:15:29","slug":"postgresqlde-gruplar-icinde-lag-fonksiyonunun-kullanimi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-gruplar-icinde-lag-fonksiyonunun-kullanimi\/","title":{"rendered":"PostgreSQL&#8217;de Gruplar \u0130\u00e7inde LAG Fonksiyonunun Kullan\u0131m\u0131"},"content":{"rendered":"<p># PostgreSQL&#8217;de LAG Fonksiyonunu Gruplar \u0130\u00e7inde Kullanmak<\/p>\n<p>PostgreSQL veritaban\u0131n\u0131zda, bir grubun i\u00e7indeki \u00f6nceki sat\u0131r\u0131n de\u011ferini almak istiyorsunuz. \u00d6rne\u011fin, bir m\u00fc\u015fterinin \u00f6nceki ayki sat\u0131\u015flar\u0131n\u0131 veya bir \u00fcr\u00fcn\u00fcn \u00f6nceki haftan\u0131n fiyat\u0131n\u0131 bulmak gibi.  Bu durumda, <code class=\"language-\">LAG()<\/code> fonksiyonunu gruplarla birlikte kullanman\u0131z gerekiyor. Bu makalede, PostgreSQL&#8217;de <code class=\"language-\">LAG()<\/code> fonksiyonunu gruplar halinde nas\u0131l kullanaca\u011f\u0131n\u0131z\u0131, ad\u0131m ad\u0131m, ger\u00e7ek d\u00fcnya \u00f6rnekleriyle ve performans optimizasyon teknikleriyle \u00f6\u011freneceksiniz.  Fatih Soysal&#8217;\u0131n yazd\u0131\u011f\u0131 bu rehber, yeni ba\u015flayanlardan ileri seviye kullan\u0131c\u0131lara kadar herkese hitap ediyor.<\/p>\n<p><strong>PostgreSQL&#8217;de LAG Fonksiyonu Nedir?<\/strong><\/p>\n<p><code class=\"language-\">LAG()<\/code> fonksiyonu, pencere fonksiyonlar\u0131n\u0131n bir par\u00e7as\u0131d\u0131r ve bir sat\u0131r\u0131n belirli bir say\u0131daki \u00f6nceki sat\u0131r\u0131n de\u011ferini d\u00f6nd\u00fcr\u00fcr.  Temel olarak, &#8220;\u015fu anki sat\u0131rdan *n* sat\u0131r \u00f6nceki sat\u0131rdaki kolonun de\u011ferini getir&#8221; der.  <code class=\"language-\">n<\/code> de\u011feri varsay\u0131lan olarak 1&#8217;dir.  Ancak <code class=\"language-\">LAG()<\/code> fonksiyonu, tek ba\u015f\u0131na kullan\u0131ld\u0131\u011f\u0131nda t\u00fcm tablo \u00fczerinde \u00e7al\u0131\u015f\u0131r.  Gruplar i\u00e7indeki \u00f6nceki sat\u0131r\u0131 bulmak i\u00e7in ise <code class=\"language-\">PARTITION BY<\/code> ve <code class=\"language-\">ORDER BY<\/code> k\u0131s\u0131mlar\u0131n\u0131 kullanmam\u0131z gerekmektedir.  Bu, her bir grup i\u00e7inde ba\u011f\u0131ms\u0131z olarak \u00f6nceki sat\u0131r\u0131 bulmam\u0131z\u0131 sa\u011flar.<\/p>\n<p><strong>LAG Fonksiyonunu Gruplar \u0130\u00e7inde Nas\u0131l Kullan\u0131r\u0131m? Temel Kavramlar<\/strong><\/p>\n<p><code class=\"language-\">LAG()<\/code> fonksiyonunun temel yap\u0131s\u0131 \u015f\u00f6yledir:<\/p>\n<pre class=\"language-sql\"><code>LAG(column_name, offset, default_value) OVER (PARTITION BY group_column ORDER BY order_column)<\/code><\/pre>\n<p>* <strong><code class=\"language-\">column_name<\/code><\/strong>: \u00d6nceki sat\u0131r\u0131n de\u011ferini almak istedi\u011finiz s\u00fctunun ad\u0131.<br \/>\n* <strong><code class=\"language-\">offset<\/code><\/strong>: \u015eu anki sat\u0131rdan ka\u00e7 sat\u0131r \u00f6nceki sat\u0131r\u0131 almak istedi\u011finizi belirtir (varsay\u0131lan de\u011fer 1).<br \/>\n* <strong><code class=\"language-\">default_value<\/code><\/strong>: E\u011fer <code class=\"language-\">offset<\/code> de\u011feri, mevcut sat\u0131rdan \u00f6nceki sat\u0131r say\u0131s\u0131n\u0131 a\u015farsa (\u00f6rne\u011fin ilk sat\u0131rda), bu de\u011fer d\u00f6nd\u00fcr\u00fcl\u00fcr.  Varsay\u0131lan olarak <code class=\"language-\">NULL<\/code> d\u00f6nd\u00fcr\u00fcr.<br \/>\n* <strong><code class=\"language-\">PARTITION BY group_column<\/code><\/strong>: Verileri gruplara ay\u0131rmak i\u00e7in kullan\u0131lan s\u00fctun. Her grup i\u00e7in <code class=\"language-\">LAG()<\/code> fonksiyonu ba\u011f\u0131ms\u0131z olarak \u00e7al\u0131\u015f\u0131r.<br \/>\n* <strong><code class=\"language-\">ORDER BY order_column<\/code><\/strong>: Her grup i\u00e7indeki sat\u0131rlar\u0131n s\u0131ralamas\u0131n\u0131 belirtir.  <code class=\"language-\">LAG()<\/code> fonksiyonunun do\u011fru \u00e7al\u0131\u015fmas\u0131 i\u00e7in mutlaka bir <code class=\"language-\">ORDER BY<\/code> klauzu kullanmal\u0131s\u0131n\u0131z.<\/p>\n<p><strong>\u00d6\u011frenme Yol Haritas\u0131<\/strong><\/p>\n<p><strong># Yeni Ba\u015flayan: Ad\u0131m Ad\u0131m A\u00e7\u0131klama ve Basit Kod \u00d6rne\u011fi<\/strong><\/p>\n<p>Diyelim ki, a\u015fa\u011f\u0131daki gibi bir <code class=\"language-\">satislar<\/code> tablomuz var:<\/p>\n<p>| tarih       | urun_id | miktar |<br \/>\n|&#8212;&#8212;&#8212;&#8212;-|&#8212;&#8212;&#8212;|&#8212;&#8212;&#8211;|<br \/>\n| 2024-01-15 | 1       | 10     |<br \/>\n| 2024-01-15 | 2       | 5      |<br \/>\n| 2024-01-22 | 1       | 15     |<br \/>\n| 2024-01-22 | 2       | 8      |<br \/>\n| 2024-01-29 | 1       | 20     |<br \/>\n| 2024-01-29 | 2       | 12     |<\/p>\n<p>Her \u00fcr\u00fcn i\u00e7in \u00f6nceki haftan\u0131n sat\u0131\u015f miktar\u0131n\u0131 g\u00f6rmek istiyoruz.  A\u015fa\u011f\u0131daki sorguyu kullanabiliriz:<\/p>\n<pre class=\"language-sql\"><code>SELECT\n    tarih,\n    urun_id,\n    miktar,\n    LAG(miktar, 1, 0) OVER (PARTITION BY urun_id ORDER BY tarih) as onceki_hafta_satis\nFROM\n    satislar;<\/code><\/pre>\n<p>Bu sorgu, her \u00fcr\u00fcn i\u00e7in (<code class=\"language-\">PARTITION BY urun_id<\/code>), tarihe g\u00f6re s\u0131ralanm\u0131\u015f (<code class=\"language-\">ORDER BY tarih<\/code>) verilerde, \u00f6nceki haftan\u0131n sat\u0131\u015f miktar\u0131n\u0131 (<code class=\"language-\">LAG(miktar, 1, 0)<\/code>) g\u00f6sterir.  <code class=\"language-\">0<\/code> de\u011feri, ilk haftan\u0131n \u00f6nceki haftas\u0131 i\u00e7in varsay\u0131lan de\u011fer olarak kullan\u0131l\u0131r.<\/p>\n<p><strong># Orta Seviye: Ger\u00e7ek Hayat \u00d6rne\u011fi ve Optimizasyon \u0130pu\u00e7lar\u0131<\/strong><\/p>\n<p>Bir e-ticaret \u015firketinde \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131z\u0131 ve her m\u00fc\u015fterinin son \u00fc\u00e7 sipari\u015finin tarihini ve toplam\u0131n\u0131 g\u00f6rmek istedi\u011finizi varsayal\u0131m.  <code class=\"language-\">siparisler<\/code> tablomuz a\u015fa\u011f\u0131daki gibi olsun:<\/p>\n<p>| siparis_id | musteri_id | siparis_tarihi | toplam_tutar |<br \/>\n|&#8212;&#8212;&#8212;&#8212;|&#8212;&#8212;&#8212;&#8212;-|&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;|&#8212;&#8212;&#8212;&#8212;&#8212;|<br \/>\n| 1          | 1           | 2024-02-10      | 100           |<br \/>\n| 2          | 1           | 2024-02-15      | 150           |<br \/>\n| 3          | 1           | 2024-02-20      | 200           |<br \/>\n| 4          | 2           | 2024-02-12      | 80            |<br \/>\n| 5          | 2           | 2024-02-25      | 120           |<\/p>\n<p>A\u015fa\u011f\u0131daki sorgu, her m\u00fc\u015fteri i\u00e7in son \u00fc\u00e7 sipari\u015fin tarihini ve toplam\u0131n\u0131 g\u00f6sterir:<\/p>\n<pre class=\"language-sql\"><code>SELECT\n    siparis_id,\n    musteri_id,\n    siparis_tarihi,\n    toplam_tutar,\n    LAG(siparis_tarihi, 1) OVER (PARTITION BY musteri_id ORDER BY siparis_tarihi) as onceki_siparis_tarihi,\n    LAG(toplam_tutar, 1) OVER (PARTITION BY musteri_id ORDER BY siparis_tarihi) as onceki_siparis_tutari\nFROM\n    siparisler\nORDER BY musteri_id, siparis_tarihi;<\/code><\/pre>\n<p><strong>Optimizasyon \u0130pu\u00e7lar\u0131:<\/strong>  B\u00fcy\u00fck tablolar i\u00e7in performans\u0131 art\u0131rmak i\u00e7in indeksler kullan\u0131n. <code class=\"language-\">siparis_tarihi<\/code> ve <code class=\"language-\">musteri_id<\/code> s\u00fctunlar\u0131na indeks eklemek sorgu h\u0131z\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde iyile\u015ftirebilir.<\/p>\n<p><strong># \u0130leri D\u00fczey: Performans Analizi ve Edge Case&#8217;ler<\/strong><\/p>\n<p>\u00c7ok b\u00fcy\u00fck tablolarla \u00e7al\u0131\u015f\u0131rken, <code class=\"language-\">LAG()<\/code> fonksiyonunun performans\u0131n\u0131 analiz etmek \u00f6nemlidir.  <code class=\"language-\">EXPLAIN ANALYZE<\/code> komutunu kullanarak sorgu plan\u0131n\u0131 inceleyebilir ve performans darbo\u011fazlar\u0131n\u0131 tespit edebilirsiniz.  Gerekirse, indeksleme stratejilerinizi optimize edebilir veya farkl\u0131 sorgu yakla\u015f\u0131mlar\u0131 deneyebilirsiniz.<\/p>\n<p><strong>Edge Case&#8217;ler:<\/strong>  <code class=\"language-\">LAG()<\/code> fonksiyonu, <code class=\"language-\">ORDER BY<\/code> klauzu olmadan \u00e7al\u0131\u015fmaz.  <code class=\"language-\">ORDER BY<\/code> klauzu olmadan kullanmaya \u00e7al\u0131\u015fmak bir hata verecektir.  Ayr\u0131ca, <code class=\"language-\">offset<\/code> de\u011feri \u00e7ok b\u00fcy\u00fckse, performans d\u00fc\u015febilir veya beklenmedik sonu\u00e7lar elde edilebilir.  Bu gibi durumlarda, daha verimli alternatifler ara\u015ft\u0131rmal\u0131s\u0131n\u0131z.  \u00d6rne\u011fin, bir alt sorgu kullanarak \u00f6nceki sat\u0131rlar\u0131 filtrelemek daha performansl\u0131 olabilir.<\/p>\n<p><strong>PostgreSQL&#8217;de LAG ile Zaman Serisi Analizi: Ger\u00e7ek D\u00fcnya Senaryosu<\/strong><\/p>\n<p>Bir hisse senedinin g\u00fcnl\u00fck kapan\u0131\u015f fiyatlar\u0131n\u0131 i\u00e7eren bir tablo d\u00fc\u015f\u00fcn\u00fcn.  Her g\u00fcn\u00fcn kapan\u0131\u015f fiyat\u0131yla \u00f6nceki g\u00fcn\u00fcn kapan\u0131\u015f fiyat\u0131 aras\u0131ndaki fark\u0131 hesaplamak istiyoruz.  Bu, hisse senedinin g\u00fcnl\u00fck de\u011fi\u015fimini anlamam\u0131za yard\u0131mc\u0131 olur.<\/p>\n<pre class=\"language-sql\"><code>CREATE TABLE hisse_fiyatlari (\n    tarih DATE,\n    hisse_adi VARCHAR(50),\n    kapanis_fiyati NUMERIC\n);\n\nINSERT INTO hisse_fiyatlari (tarih, hisse_adi, kapanis_fiyati) VALUES\n('2024-03-01', 'AAPL', 150.00),\n('2024-03-04', 'AAPL', 152.50),\n('2024-03-05', 'AAPL', 155.00),\n('2024-03-06', 'AAPL', 153.75),\n('2024-03-01', 'MSFT', 250.00),\n('2024-03-04', 'MSFT', 255.00),\n('2024-03-05', 'MSFT', 252.00),\n('2024-03-06', 'MSFT', 260.00);\n\n\nSELECT\n    tarih,\n    hisse_adi,\n    kapanis_fiyati,\n    LAG(kapanis_fiyati, 1, kapanis_fiyati) OVER (PARTITION BY hisse_adi ORDER BY tarih) as onceki_gun_kapanis,\n    kapanis_fiyati - LAG(kapanis_fiyati, 1, kapanis_fiyati) OVER (PARTITION BY hisse_adi ORDER BY tarih) as gunluk_degisim\nFROM\n    hisse_fiyatlari\nORDER BY hisse_adi, tarih;<\/code><\/pre>\n<p>Bu sorgu, her hisse senedi i\u00e7in g\u00fcnl\u00fck kapan\u0131\u015f fiyat\u0131n\u0131, \u00f6nceki g\u00fcn\u00fcn kapan\u0131\u015f fiyat\u0131n\u0131 ve aralar\u0131ndaki fark\u0131 hesaplar.  <code class=\"language-\">LAG()<\/code> fonksiyonunun <code class=\"language-\">default_value<\/code> parametresi, ilk g\u00fcn i\u00e7in \u00f6nceki g\u00fcn\u00fcn kapan\u0131\u015f fiyat\u0131n\u0131 kendisiyle kar\u015f\u0131la\u015ft\u0131rarak <code class=\"language-\">0<\/code> g\u00fcnl\u00fck de\u011fi\u015fim g\u00f6stermesini sa\u011flar.<\/p>\n<p><strong>Performans Optimizasyonu i\u00e7in \u0130pu\u00e7lar\u0131<\/strong><\/p>\n<p>* <strong>\u0130ndeksler:<\/strong>  <code class=\"language-\">PARTITION BY<\/code> ve <code class=\"language-\">ORDER BY<\/code> k\u0131s\u0131mlar\u0131nda kullan\u0131lan s\u00fctunlara indeks eklemek sorgu performans\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilir.<br \/>\n* <strong>WHERE klauzu:<\/strong>  Gerekli verileri filtrelemek i\u00e7in <code class=\"language-\">WHERE<\/code> klauzu kullan\u0131n.  Bu, <code class=\"language-\">LAG()<\/code> fonksiyonunun daha az veri \u00fczerinde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flayarak performans\u0131 iyile\u015ftirir.<br \/>\n* <strong>Alt sorgular:<\/strong>  Karma\u015f\u0131k sorgularda, alt sorgular kullanarak <code class=\"language-\">LAG()<\/code> fonksiyonunu daha k\u00fc\u00e7\u00fck veri k\u00fcmeleri \u00fczerinde \u00e7al\u0131\u015ft\u0131rmay\u0131 d\u00fc\u015f\u00fcnebilirsiniz.<br \/>\n* <strong>Materyalize G\u00f6r\u00fcn\u00fcmler:<\/strong>  S\u0131k kullan\u0131lan sorgular i\u00e7in materyalize g\u00f6r\u00fcn\u00fcmler olu\u015fturmak, performans\u0131 iyile\u015ftirebilir.<\/p>\n<p><strong>Sonu\u00e7<\/strong><\/p>\n<p>PostgreSQL&#8217;de <code class=\"language-\">LAG()<\/code> fonksiyonunu gruplar i\u00e7inde kullanmak, zaman serileri analizi ve di\u011fer bir\u00e7ok veri analizi g\u00f6revini kolayla\u015ft\u0131r\u0131r.  Bu makalede, <code class=\"language-\">LAG()<\/code> fonksiyonunun temel kullan\u0131m\u0131n\u0131, ger\u00e7ek d\u00fcnya \u00f6rneklerini ve performans optimizasyon tekniklerini ele ald\u0131k.  Unutmay\u0131n ki, b\u00fcy\u00fck verilerle \u00e7al\u0131\u015f\u0131rken performans optimizasyonu \u00e7ok \u00f6nemlidir.  Do\u011fru indeksleme stratejileri ve sorgu optimizasyonu, performans\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde iyile\u015ftirebilir.  Daha fazla ileri seviye PostgreSQL konusu \u00f6\u011frenmek i\u00e7in [Fatih Soysal&#8217;\u0131n bloguna](https:\/\/fatihsoysal.com) g\u00f6z atabilirsiniz.<\/p>\n<p><strong>S\u0131k\u00e7a Sorulan Sorular:<\/strong><\/p>\n<p>1. <strong><code class=\"language-\">LAG()<\/code> fonksiyonu <code class=\"language-\">LEAD()<\/code> fonksiyonundan nas\u0131l farkl\u0131d\u0131r?<\/strong> <code class=\"language-\">LAG()<\/code>, \u00f6nceki sat\u0131r\u0131n de\u011ferini d\u00f6nd\u00fcr\u00fcrken, <code class=\"language-\">LEAD()<\/code> sonraki sat\u0131r\u0131n de\u011ferini d\u00f6nd\u00fcr\u00fcr.<\/p>\n<p>2. <strong><code class=\"language-\">offset<\/code> parametresi negatif olabilir mi?<\/strong> Hay\u0131r, <code class=\"language-\">offset<\/code> parametresi negatif olamaz.<\/p>\n<p>3. <strong><code class=\"language-\">default_value<\/code> parametresi neden \u00f6nemlidir?<\/strong> \u0130lk sat\u0131rda veya <code class=\"language-\">offset<\/code> de\u011feri ge\u00e7ersiz oldu\u011funda <code class=\"language-\">NULL<\/code> yerine belirli bir de\u011fer d\u00f6nd\u00fcrmek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<p>4. <strong><code class=\"language-\">PARTITION BY<\/code> klauzu olmadan <code class=\"language-\">LAG()<\/code> fonksiyonu nas\u0131l \u00e7al\u0131\u015f\u0131r?<\/strong>  <code class=\"language-\">PARTITION BY<\/code> klauzu olmadan t\u00fcm tablo tek bir grup olarak i\u015flem g\u00f6r\u00fcr.<\/p>\n<p>5. <strong>B\u00fcy\u00fck tablolar i\u00e7in performans\u0131 nas\u0131l iyile\u015ftirebilirim?<\/strong> \u0130ndeksleme, <code class=\"language-\">WHERE<\/code> klauzu kullan\u0131m\u0131, alt sorgular ve materyalize g\u00f6r\u00fcn\u00fcmler performans\u0131 art\u0131rabilir.<\/p>\n<p>Yazar: Fatih Soysal<\/p>\n","protected":false},"excerpt":{"rendered":"# PostgreSQL&#8217;de LAG Fonksiyonunu Gruplar \u0130\u00e7inde Kullanmak PostgreSQL veritaban\u0131n\u0131zda, bir grubun i\u00e7indeki \u00f6nceki sat\u0131r\u0131n de\u011ferini almak istiyorsunuz. \u00d6rne\u011fin,&hellip;","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":[644],"tags":[],"class_list":{"0":"post-25866","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-postgresql","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>PostgreSQL&#039;de Gruplar \u0130\u00e7inde LAG Fonksiyonunun Kullan\u0131m\u0131<\/title>\n<meta name=\"description\" content=\"Hi\u00e7bir etiketi bulunamad\u0131.\" \/>\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\/postgresqlde-gruplar-icinde-lag-fonksiyonunun-kullanimi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PostgreSQL&#039;de Gruplar \u0130\u00e7inde LAG Fonksiyonunun Kullan\u0131m\u0131\" \/>\n<meta property=\"og:description\" content=\"Hi\u00e7bir etiketi bulunamad\u0131.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-gruplar-icinde-lag-fonksiyonunun-kullanimi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-07-14T18:15:29+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=\"7 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-gruplar-icinde-lag-fonksiyonunun-kullanimi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-gruplar-icinde-lag-fonksiyonunun-kullanimi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"PostgreSQL&#8217;de Gruplar \u0130\u00e7inde LAG Fonksiyonunun Kullan\u0131m\u0131\",\"datePublished\":\"2025-07-14T18:15:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-gruplar-icinde-lag-fonksiyonunun-kullanimi\/\"},\"wordCount\":1061,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"PostgreSQL\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-gruplar-icinde-lag-fonksiyonunun-kullanimi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-gruplar-icinde-lag-fonksiyonunun-kullanimi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-gruplar-icinde-lag-fonksiyonunun-kullanimi\/\",\"name\":\"PostgreSQL'de Gruplar \u0130\u00e7inde LAG Fonksiyonunun Kullan\u0131m\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-07-14T18:15:29+00:00\",\"description\":\"Hi\u00e7bir etiketi bulunamad\u0131.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-gruplar-icinde-lag-fonksiyonunun-kullanimi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-gruplar-icinde-lag-fonksiyonunun-kullanimi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/postgresqlde-gruplar-icinde-lag-fonksiyonunun-kullanimi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PostgreSQL&#8217;de Gruplar \u0130\u00e7inde LAG Fonksiyonunun Kullan\u0131m\u0131\"}]},{\"@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":"PostgreSQL'de Gruplar \u0130\u00e7inde LAG Fonksiyonunun Kullan\u0131m\u0131","description":"Hi\u00e7bir etiketi bulunamad\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\/postgresqlde-gruplar-icinde-lag-fonksiyonunun-kullanimi\/","og_locale":"tr_TR","og_type":"article","og_title":"PostgreSQL'de Gruplar \u0130\u00e7inde LAG Fonksiyonunun Kullan\u0131m\u0131","og_description":"Hi\u00e7bir etiketi bulunamad\u0131.","og_url":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-gruplar-icinde-lag-fonksiyonunun-kullanimi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-07-14T18:15:29+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"7 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-gruplar-icinde-lag-fonksiyonunun-kullanimi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-gruplar-icinde-lag-fonksiyonunun-kullanimi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"PostgreSQL&#8217;de Gruplar \u0130\u00e7inde LAG Fonksiyonunun Kullan\u0131m\u0131","datePublished":"2025-07-14T18:15:29+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-gruplar-icinde-lag-fonksiyonunun-kullanimi\/"},"wordCount":1061,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["PostgreSQL"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/postgresqlde-gruplar-icinde-lag-fonksiyonunun-kullanimi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-gruplar-icinde-lag-fonksiyonunun-kullanimi\/","url":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-gruplar-icinde-lag-fonksiyonunun-kullanimi\/","name":"PostgreSQL'de Gruplar \u0130\u00e7inde LAG Fonksiyonunun Kullan\u0131m\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-07-14T18:15:29+00:00","description":"Hi\u00e7bir etiketi bulunamad\u0131.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-gruplar-icinde-lag-fonksiyonunun-kullanimi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/postgresqlde-gruplar-icinde-lag-fonksiyonunun-kullanimi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/postgresqlde-gruplar-icinde-lag-fonksiyonunun-kullanimi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"PostgreSQL&#8217;de Gruplar \u0130\u00e7inde LAG Fonksiyonunun Kullan\u0131m\u0131"}]},{"@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\/25866","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=25866"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/25866\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=25866"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=25866"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=25866"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}