{"id":26961,"date":"2025-08-03T12:15:23","date_gmt":"2025-08-03T09:15:23","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/postgresql-benzersiz-degerlerle-string_agg-kullanimi\/"},"modified":"2025-08-03T12:15:23","modified_gmt":"2025-08-03T09:15:23","slug":"postgresql-benzersiz-degerlerle-string_agg-kullanimi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/postgresql-benzersiz-degerlerle-string_agg-kullanimi\/","title":{"rendered":"PostgreSQL: Benzersiz De\u011ferlerle string_agg Kullan\u0131m\u0131"},"content":{"rendered":"<p># PostgreSQL&#8217;de string_agg ile Benzersiz De\u011ferleri Birle\u015ftirme<\/p>\n<p>PostgreSQL veritaban\u0131n\u0131zda birden \u00e7ok sat\u0131rdaki verileri tek bir sat\u0131ra, virg\u00fclle ayr\u0131lm\u0131\u015f bir string olarak birle\u015ftirmeniz gerekiyor mu?  \u00d6rne\u011fin, bir m\u00fc\u015fterinin sipari\u015f verdi\u011fi t\u00fcm \u00fcr\u00fcnleri tek bir alanda g\u00f6stermek mi istiyorsunuz?  \u0130\u015fte tam burada <code class=\"language-\">string_agg<\/code> fonksiyonu devreye giriyor. Ancak, ayn\u0131 \u00fcr\u00fcn\u00fc birden fazla sipari\u015f etmi\u015f bir m\u00fc\u015fteri i\u00e7in tekrar eden de\u011ferleri engellemek istiyorsan\u0131z, i\u015fler biraz daha karma\u015f\u0131kla\u015f\u0131yor. Bu makalede, PostgreSQL&#8217;de <code class=\"language-\">string_agg<\/code> fonksiyonunu benzersiz de\u011ferlerle nas\u0131l kullanaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m, ger\u00e7ek d\u00fcnya \u00f6rnekleriyle ve performans optimizasyon teknikleriyle \u00f6\u011freneceksiniz.<\/p>\n<p><strong>\u00d6\u011frenme Yol Haritas\u0131:<\/strong><\/p>\n<p>* <strong>Yeni Ba\u015flayan:<\/strong>  <code class=\"language-\">string_agg<\/code>&#8216;in temel kullan\u0131m\u0131n\u0131 ve basit \u00f6rnekleri.<br \/>\n* <strong>Orta Seviye:<\/strong> Ger\u00e7ek d\u00fcnya senaryolar\u0131, performans ipu\u00e7lar\u0131 ve daha geli\u015fmi\u015f kullan\u0131m \u00f6rnekleri.<br \/>\n* <strong>\u0130leri Seviye:<\/strong> Performans analizi, s\u0131n\u0131r durumlar\u0131 (edge cases) ve karma\u015f\u0131k sorgularda <code class=\"language-\">string_agg<\/code>&#8216;in kullan\u0131m\u0131.<\/p>\n<p><strong>PostgreSQL&#8217;de string_agg Fonksiyonu Nedir?<\/strong><\/p>\n<p><code class=\"language-\">string_agg<\/code> fonksiyonu, bir gruptaki de\u011ferleri tek bir string halinde birle\u015ftirmenizi sa\u011flar.  Birle\u015ftirme i\u015flemi s\u0131ras\u0131nda, her de\u011feri belirledi\u011finiz bir ay\u0131r\u0131c\u0131 ile birbirinden ay\u0131r\u0131r. \u00d6rne\u011fin, virg\u00fcl, bo\u015fluk veya tire kullanabilirsiniz.  Bu fonksiyon, genellikle <code class=\"language-\">GROUP BY<\/code> c\u00fcmleci\u011fi ile birlikte kullan\u0131l\u0131r. Temel yap\u0131s\u0131 \u015fu \u015fekildedir:<\/p>\n<pre class=\"language-sql\"><code>string_agg(column, delimiter)<\/code><\/pre>\n<p>Burada <code class=\"language-\">column<\/code> birle\u015ftirmek istedi\u011finiz s\u00fctun, <code class=\"language-\">delimiter<\/code> ise de\u011ferler aras\u0131na eklenecek ay\u0131r\u0131c\u0131d\u0131r.<\/p>\n<p><strong>string_agg ile Benzersiz De\u011ferleri Birle\u015ftirme: Temel Kullan\u0131m<\/strong><\/p>\n<p>Yeni ba\u015flayanlar i\u00e7in, <code class=\"language-\">string_agg<\/code> fonksiyonunu benzersiz de\u011ferlerle kullanman\u0131n en basit yolu, <code class=\"language-\">DISTINCT<\/code> anahtar kelimesini kullanmakt\u0131r.  A\u015fa\u011f\u0131daki \u00f6rnekte, her m\u00fc\u015fterinin sipari\u015f verdi\u011fi *benzersiz* \u00fcr\u00fcnleri birle\u015ftiriyoruz:<\/p>\n<p><strong>\u00d6rnek Veri Taban\u0131 (\u00dcr\u00fcnler Tablosu):<\/strong><\/p>\n<p>| M\u00fc\u015fteriID | \u00dcr\u00fcnAd\u0131 |<br \/>\n|&#8212;|&#8212;|<br \/>\n| 1 | Elma |<br \/>\n| 1 | Armut |<br \/>\n| 1 | Elma |<br \/>\n| 2 | Portakal |<br \/>\n| 2 | Muz |<br \/>\n| 2 | Portakal |<\/p>\n<p><strong>SQL Sorgusu:<\/strong><\/p>\n<pre class=\"language-sql\"><code>SELECT\n    M\u00fc\u015fteriID,\n    string_agg(DISTINCT \u00dcr\u00fcnAd\u0131, ', ') AS Sipari\u015fEdilen\u00dcr\u00fcnler\nFROM\n    \u00dcr\u00fcnler\nGROUP BY\n    M\u00fc\u015fteriID;<\/code><\/pre>\n<p><strong>Sonu\u00e7:<\/strong><\/p>\n<p>| M\u00fc\u015fteriID | Sipari\u015fEdilen\u00dcr\u00fcnler |<br \/>\n|&#8212;|&#8212;|<br \/>\n| 1 | Elma, Armut |<br \/>\n| 2 | Portakal, Muz |<\/p>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, her m\u00fc\u015fteri i\u00e7in ayn\u0131 \u00fcr\u00fcn sadece bir kez listelenmi\u015ftir.<\/p>\n<p><strong>string_agg ile Benzersiz De\u011ferleri Birle\u015ftirme: Ger\u00e7ek D\u00fcnya \u00d6rne\u011fi ve Optimizasyon \u0130pu\u00e7lar\u0131<\/strong><\/p>\n<p>\u015eimdi, daha ger\u00e7ek\u00e7i bir senaryoya bakal\u0131m. Bir e-ticaret sitesinin \u00fcr\u00fcn kategorilerini ve her kategorideki benzersiz \u00fcr\u00fcn say\u0131s\u0131n\u0131 listeleyelim.  Bu \u00f6rnekte, \u00f6nce her kategorideki benzersiz \u00fcr\u00fcn adlar\u0131n\u0131 birle\u015ftirece\u011fiz, sonra bu listeyi kullanarak her kategorideki \u00fcr\u00fcn say\u0131s\u0131n\u0131 hesaplayaca\u011f\u0131z.<\/p>\n<p><strong>\u00d6rnek Veri Taban\u0131 (\u00dcr\u00fcnler Tablosu):<\/strong><\/p>\n<p>| \u00dcr\u00fcnID | \u00dcr\u00fcnAd\u0131 | Kategori |<br \/>\n|&#8212;|&#8212;|&#8212;|<br \/>\n| 1 | Ayakkab\u0131 1 | Ayakkab\u0131 |<br \/>\n| 2 | Ayakkab\u0131 2 | Ayakkab\u0131 |<br \/>\n| 3 | Elbise 1 | Giyim |<br \/>\n| 4 | Elbise 2 | Giyim |<br \/>\n| 5 | Ayakkab\u0131 1 | Ayakkab\u0131 |<br \/>\n| 6 | Pantolon 1 | Giyim |<\/p>\n<p><strong>SQL Sorgusu:<\/strong><\/p>\n<pre class=\"language-sql\"><code>WITH BenzersizUrunler AS (\n    SELECT \n        Kategori, \n        string_agg(DISTINCT \u00dcr\u00fcnAd\u0131, ', ') as Urunler\n    FROM \n        \u00dcr\u00fcnler\n    GROUP BY \n        Kategori\n)\nSELECT \n    Kategori, \n    Urunler, \n    COUNT(DISTINCT \u00dcr\u00fcnAd\u0131) OVER (PARTITION BY Kategori) as UrunSayisi\nFROM \n    BenzersizUrunler;<\/code><\/pre>\n<p>Bu sorgu, \u00f6nce bir CTE (Common Table Expression) kullanarak her kategori i\u00e7in benzersiz \u00fcr\u00fcn adlar\u0131n\u0131 birle\u015ftirir. Ard\u0131ndan, bu CTE&#8217;yi kullanarak her kategorideki benzersiz \u00fcr\u00fcn say\u0131s\u0131n\u0131 hesaplar.  Bu yakla\u015f\u0131m, okunabilirli\u011fi ve performans\u0131 art\u0131r\u0131r.  B\u00fcy\u00fck veri k\u00fcmeleri i\u00e7in indeksleme (\u00f6rne\u011fin, <code class=\"language-\">\u00dcr\u00fcnAd\u0131<\/code> ve <code class=\"language-\">Kategori<\/code> s\u00fctunlar\u0131na indeks eklemek) performans\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde iyile\u015ftirebilir.<\/p>\n<p><strong>\u0130leri D\u00fczey Kullan\u0131m: Performans Analizi ve S\u0131n\u0131r Durumlar\u0131<\/strong><\/p>\n<p>\u00c7ok b\u00fcy\u00fck veri k\u00fcmeleriyle \u00e7al\u0131\u015f\u0131rken, <code class=\"language-\">string_agg<\/code> performans\u0131 etkileyebilir.  Bu durumda, a\u015fa\u011f\u0131daki optimizasyon tekniklerini kullanabilirsiniz:<\/p>\n<p>* <strong>Par\u00e7alama (Partitioning):<\/strong> Veri taban\u0131n\u0131z\u0131 kategorilere g\u00f6re b\u00f6l\u00fcmlere ay\u0131rmak, <code class=\"language-\">string_agg<\/code> i\u015flemini daha k\u00fc\u00e7\u00fck veri k\u00fcmeleri \u00fczerinde \u00e7al\u0131\u015ft\u0131rman\u0131za olanak tan\u0131r ve performans\u0131 art\u0131r\u0131r.<br \/>\n* <strong>\u0130ndeksler:<\/strong>  <code class=\"language-\">string_agg<\/code> fonksiyonunda kullan\u0131lan s\u00fctunlara indeks eklemek, sorgunun y\u00fcr\u00fct\u00fclme s\u00fcresini k\u0131saltabilir.<br \/>\n* <strong>Alternatif Yakla\u015f\u0131mlar:<\/strong>  \u00c7ok b\u00fcy\u00fck veri k\u00fcmeleri i\u00e7in, <code class=\"language-\">string_agg<\/code> yerine daha performansl\u0131 alternatifler d\u00fc\u015f\u00fcnebilirsiniz. \u00d6rne\u011fin, verileri \u00f6ncelikle birle\u015ftirme i\u015flemini ger\u00e7ekle\u015ftirmek i\u00e7in bir programlama dili kullanarak i\u015fleyebilir ve daha sonra sonucu veritaban\u0131na kaydedebilirsiniz.  Bu, veritaban\u0131 sunucusundaki y\u00fck\u00fc azalt\u0131r.<\/p>\n<p><strong>S\u0131n\u0131r Durumlar\u0131:<\/strong><\/p>\n<p>* <strong>Bo\u015f De\u011ferler:<\/strong> <code class=\"language-\">string_agg<\/code> fonksiyonu, bo\u015f de\u011ferleri varsay\u0131lan olarak yoksayar.  Bo\u015f de\u011ferleri dahil etmek istiyorsan\u0131z, <code class=\"language-\">NULL<\/code> de\u011ferlerini bir string&#8217;e d\u00f6n\u00fc\u015ft\u00fcrmeniz gerekir (\u00f6rne\u011fin, <code class=\"language-\">COALESCE(\u00dcr\u00fcnAd\u0131, 'Bilinmiyor')<\/code>).<br \/>\n* <strong>\u00c7ok B\u00fcy\u00fck Stringler:<\/strong>  <code class=\"language-\">string_agg<\/code> sonucu \u00e7ok b\u00fcy\u00fck bir string olabilir.  Bu durumda, veritaban\u0131 sunucunuzun bellek s\u0131n\u0131rlamalar\u0131na dikkat etmeniz gerekir.  Gerekirse, sonu\u00e7lar\u0131 daha k\u00fc\u00e7\u00fck par\u00e7alara b\u00f6lerek i\u015fleyebilirsiniz.<\/p>\n<p><strong>PostgreSQL&#8217;de string_agg ile \u0130lgili S\u0131k\u00e7a Sorulan Sorular (SSS)<\/strong><\/p>\n<p>1. <strong><code class=\"language-\">string_agg<\/code> fonksiyonu hangi veri tiplerini destekler?<\/strong>  <code class=\"language-\">string_agg<\/code> fonksiyonu, <code class=\"language-\">text<\/code> veri tipiyle \u00e7al\u0131\u015f\u0131r. Di\u011fer veri tiplerini kullanman\u0131z gerekiyorsa, \u00f6ncelikle bunlar\u0131 <code class=\"language-\">text<\/code> veri tipine d\u00f6n\u00fc\u015ft\u00fcrmeniz gerekir.<\/p>\n<p>2. <strong><code class=\"language-\">string_agg<\/code> fonksiyonu b\u00fcy\u00fck veri k\u00fcmeleri i\u00e7in yava\u015fsa ne yapabilirim?<\/strong>  Yukar\u0131da belirtildi\u011fi gibi, par\u00e7alama, indeksleme ve alternatif yakla\u015f\u0131mlar\u0131 deneyebilirsiniz.  Ayr\u0131ca, sorguyu optimize etmek i\u00e7in <code class=\"language-\">EXPLAIN ANALYZE<\/code> komutunu kullanarak sorgu plan\u0131n\u0131 inceleyebilirsiniz.<\/p>\n<p>3. <strong><code class=\"language-\">string_agg<\/code> fonksiyonu ile olu\u015fturulan string&#8217;in uzunlu\u011fu s\u0131n\u0131rl\u0131 m\u0131d\u0131r?<\/strong> Evet, PostgreSQL&#8217;de bir string&#8217;in maksimum uzunlu\u011fu vard\u0131r.  \u00c7ok b\u00fcy\u00fck stringler olu\u015fturmaya \u00e7al\u0131\u015f\u0131yorsan\u0131z, verileri daha k\u00fc\u00e7\u00fck par\u00e7alara b\u00f6lmeniz gerekebilir.<\/p>\n<p>4. <strong><code class=\"language-\">string_agg<\/code> fonksiyonu ile s\u0131ral\u0131 bir birle\u015ftirme nas\u0131l yap\u0131l\u0131r?<\/strong>  <code class=\"language-\">ORDER BY<\/code> c\u00fcmleci\u011fini kullanarak birle\u015ftirme i\u015flemini s\u0131ralayabilirsiniz. \u00d6rne\u011fin: <code class=\"language-\">string_agg(DISTINCT \u00dcr\u00fcnAd\u0131 ORDER BY \u00dcr\u00fcnAd\u0131, ', ')<\/code>.<\/p>\n<p>5. <strong><code class=\"language-\">string_agg<\/code> fonksiyonu yerine ba\u015fka bir fonksiyon kullanabilir miyim?<\/strong> Baz\u0131 durumlarda, <code class=\"language-\">array_agg<\/code> fonksiyonu daha uygun olabilir. <code class=\"language-\">array_agg<\/code> fonksiyonu, bir dizi d\u00f6nd\u00fcr\u00fcr ve baz\u0131 durumlarda <code class=\"language-\">string_agg<\/code>&#8216;den daha performansl\u0131 olabilir.<\/p>\n<p><strong>Sonu\u00e7<\/strong><\/p>\n<p>Bu makalede, PostgreSQL&#8217;de <code class=\"language-\">string_agg<\/code> fonksiyonunu benzersiz de\u011ferlerle nas\u0131l kullanaca\u011f\u0131n\u0131z\u0131, ger\u00e7ek d\u00fcnya \u00f6rnekleriyle ve performans optimizasyon teknikleriyle \u00f6\u011frendiniz.  Ba\u015flang\u0131\u00e7 seviyesinden ileri seviyeye kadar olan yolculu\u011funuzda, do\u011fru teknikleri kullanarak verilerinizi etkili bir \u015fekilde birle\u015ftirebilirsiniz.  Daha fazla PostgreSQL ipucu ve teknikleri i\u00e7in [fatihsoysal.com](https:\/\/fatihsoysal.com) adresini ziyaret edebilirsiniz.<\/p>\n<p>Yazar: Fatih Soysal<\/p>\n","protected":false},"excerpt":{"rendered":"# PostgreSQL&#8217;de string_agg ile Benzersiz De\u011ferleri Birle\u015ftirme PostgreSQL veritaban\u0131n\u0131zda birden \u00e7ok sat\u0131rdaki verileri tek bir sat\u0131ra, virg\u00fclle ayr\u0131lm\u0131\u015f&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-26961","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: Benzersiz De\u011ferlerle string_agg 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\/postgresql-benzersiz-degerlerle-string_agg-kullanimi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PostgreSQL: Benzersiz De\u011ferlerle string_agg Kullan\u0131m\u0131\" \/>\n<meta property=\"og:description\" content=\"Hi\u00e7bir etiketi bulunamad\u0131.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/postgresql-benzersiz-degerlerle-string_agg-kullanimi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-08-03T09:15:23+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=\"5 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/postgresql-benzersiz-degerlerle-string_agg-kullanimi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/postgresql-benzersiz-degerlerle-string_agg-kullanimi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"PostgreSQL: Benzersiz De\u011ferlerle string_agg Kullan\u0131m\u0131\",\"datePublished\":\"2025-08-03T09:15:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/postgresql-benzersiz-degerlerle-string_agg-kullanimi\/\"},\"wordCount\":943,\"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\/postgresql-benzersiz-degerlerle-string_agg-kullanimi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/postgresql-benzersiz-degerlerle-string_agg-kullanimi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/postgresql-benzersiz-degerlerle-string_agg-kullanimi\/\",\"name\":\"PostgreSQL: Benzersiz De\u011ferlerle string_agg Kullan\u0131m\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-08-03T09:15:23+00:00\",\"description\":\"Hi\u00e7bir etiketi bulunamad\u0131.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/postgresql-benzersiz-degerlerle-string_agg-kullanimi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/postgresql-benzersiz-degerlerle-string_agg-kullanimi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/postgresql-benzersiz-degerlerle-string_agg-kullanimi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PostgreSQL: Benzersiz De\u011ferlerle string_agg 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: Benzersiz De\u011ferlerle string_agg 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\/postgresql-benzersiz-degerlerle-string_agg-kullanimi\/","og_locale":"tr_TR","og_type":"article","og_title":"PostgreSQL: Benzersiz De\u011ferlerle string_agg Kullan\u0131m\u0131","og_description":"Hi\u00e7bir etiketi bulunamad\u0131.","og_url":"https:\/\/fatihsoysal.com\/blog\/postgresql-benzersiz-degerlerle-string_agg-kullanimi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-08-03T09:15:23+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"5 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/postgresql-benzersiz-degerlerle-string_agg-kullanimi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/postgresql-benzersiz-degerlerle-string_agg-kullanimi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"PostgreSQL: Benzersiz De\u011ferlerle string_agg Kullan\u0131m\u0131","datePublished":"2025-08-03T09:15:23+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/postgresql-benzersiz-degerlerle-string_agg-kullanimi\/"},"wordCount":943,"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\/postgresql-benzersiz-degerlerle-string_agg-kullanimi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/postgresql-benzersiz-degerlerle-string_agg-kullanimi\/","url":"https:\/\/fatihsoysal.com\/blog\/postgresql-benzersiz-degerlerle-string_agg-kullanimi\/","name":"PostgreSQL: Benzersiz De\u011ferlerle string_agg Kullan\u0131m\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-08-03T09:15:23+00:00","description":"Hi\u00e7bir etiketi bulunamad\u0131.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/postgresql-benzersiz-degerlerle-string_agg-kullanimi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/postgresql-benzersiz-degerlerle-string_agg-kullanimi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/postgresql-benzersiz-degerlerle-string_agg-kullanimi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"PostgreSQL: Benzersiz De\u011ferlerle string_agg 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\/26961","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=26961"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/26961\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=26961"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=26961"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=26961"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}