{"id":33949,"date":"2025-11-09T06:30:58","date_gmt":"2025-11-09T03:30:58","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/sql-ile-kategorilere-gore-veri-toplama-ve-analizi\/"},"modified":"2025-11-09T06:30:58","modified_gmt":"2025-11-09T03:30:58","slug":"sql-ile-kategorilere-gore-veri-toplama-ve-analizi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/sql-ile-kategorilere-gore-veri-toplama-ve-analizi\/","title":{"rendered":"SQL ile Kategorilere G\u00f6re Veri Toplama ve Analizi"},"content":{"rendered":"<p><body><\/p>\n<p>B\u00fcy\u00fck veri setleri aras\u0131nda kaybolmadan anlaml\u0131 sonu\u00e7lar \u00e7\u0131karmak ve i\u015f kararlar\u0131n\u0131z\u0131 verilere dayand\u0131rmak m\u0131 istiyorsunuz? SQL&#8217;de kategorilere g\u00f6re veri toplama, karma\u015f\u0131k bilgileri anla\u015f\u0131l\u0131r \u00f6zetlere d\u00f6n\u00fc\u015ft\u00fcrmenize olanak tan\u0131r. Bu teknik makalede, veri analizi ve raporlaman\u0131n temel ta\u015flar\u0131ndan biri olan kategori bazl\u0131 toplama i\u015flemlerini s\u0131f\u0131rdan ileri seviyeye kadar ad\u0131m ad\u0131m ele alaca\u011f\u0131z.<\/p>\n<p>G\u00fcn\u00fcm\u00fcz i\u015f d\u00fcnyas\u0131nda veri, \u015firketlerin en de\u011ferli varl\u0131klar\u0131ndan biridir. Ancak ham veri y\u0131\u011f\u0131nlar\u0131 tek ba\u015f\u0131na bir anlam ifade etmez. As\u0131l de\u011fer, bu verilerin i\u015flenmesi, analiz edilmesi ve anlaml\u0131 bilgilere d\u00f6n\u00fc\u015ft\u00fcr\u00fclmesiyle ortaya \u00e7\u0131kar. \u0130\u015fte tam da bu noktada, SQL&#8217;de kategorilere g\u00f6re toplama i\u015flemleri devreye girer. Bir e-ticaret \u015firketinin g\u00fcnl\u00fck sat\u0131\u015f verilerini d\u00fc\u015f\u00fcn\u00fcn. Binlerce farkl\u0131 \u00fcr\u00fcn\u00fcn sat\u0131ld\u0131\u011f\u0131, onlarca farkl\u0131 kategoriye ayr\u0131ld\u0131\u011f\u0131 ve farkl\u0131 b\u00f6lgelerden gelen sipari\u015flerin oldu\u011fu bir tablo hayal edin. Bu ham veriye bakarak &#8220;Hangi \u00fcr\u00fcn kategorisi en \u00e7ok gelir getiriyor?&#8221; ya da &#8220;Hangi b\u00f6lgedeki sat\u0131\u015flar ge\u00e7en aya g\u00f6re artt\u0131?&#8221; gibi sorulara h\u0131zl\u0131ca yan\u0131t vermek neredeyse imkans\u0131zd\u0131r. \u0130\u015fte bu y\u00fczden, verileri belirli kategoriler (\u00fcr\u00fcn kategorisi, b\u00f6lge, m\u00fc\u015fteri segmenti vb.) alt\u0131nda grupland\u0131r\u0131p ilgili metrikleri (toplam gelir, ortalama sat\u0131\u015f tutar\u0131, adet) toplamak hayati \u00f6nem ta\u015f\u0131r.<\/p>\n<p>Kategorilere g\u00f6re toplama, veri analistlerinin, i\u015f zekas\u0131 uzmanlar\u0131n\u0131n ve y\u00f6neticilerin karma\u015f\u0131k veri setlerinden \u00f6zet bilgiler \u00e7\u0131karmas\u0131n\u0131, e\u011filimleri belirlemesini ve gelece\u011fe y\u00f6nelik stratejiler geli\u015ftirmesini sa\u011flar. \u00d6rne\u011fin, bir perakende zinciri, bu sayede hangi \u015fubelerin daha ba\u015far\u0131l\u0131 oldu\u011funu, hangi \u00fcr\u00fcn gruplar\u0131na daha fazla yat\u0131r\u0131m yapmas\u0131 gerekti\u011fini veya hangi pazarlama kampanyalar\u0131n\u0131n daha etkili oldu\u011funu kolayca anlayabilir. Finans sekt\u00f6r\u00fcnde gider kalemlerinin takibi, \u00fcretimde ar\u0131zalar\u0131n kategori baz\u0131nda analizi, sa\u011fl\u0131kta hastal\u0131klar\u0131n demografik da\u011f\u0131l\u0131m\u0131 gibi say\u0131s\u0131z alanda bu teknik kullan\u0131lmaktad\u0131r. Bu i\u015flemler, sadece veri y\u0131\u011f\u0131nlar\u0131n\u0131 k\u00fc\u00e7\u00fcltmekle kalmaz, ayn\u0131 zamanda karar alma s\u00fcre\u00e7lerini h\u0131zland\u0131r\u0131r ve \u015firketlere rekabet avantaj\u0131 sa\u011flar. Dolay\u0131s\u0131yla, veri odakl\u0131 bir d\u00fcnyada kategori bazl\u0131 toplama yetene\u011fi, her veri profesyonelinin sahip olmas\u0131 gereken temel bir beceridir. Bu makale boyunca, bu g\u00fc\u00e7l\u00fc SQL \u00f6zelli\u011fini en basitinden en karma\u015f\u0131k senaryolara kadar nas\u0131l kullanaca\u011f\u0131n\u0131z\u0131 pratik \u00f6rneklerle \u00f6\u011freneceksiniz.<\/p>\n<h2>SQL&#8217;de Temel Toplama \u0130\u015flemleri: GROUP BY ve SUM Fonksiyonlar\u0131 Nedir?<\/h2>\n<p>SQL&#8217;de kategorilere g\u00f6re toplama yapabilmek i\u00e7in iki anahtar bile\u015fene ihtiyac\u0131m\u0131z vard\u0131r: <code>SUM()<\/code> agrega fonksiyonu ve <code>GROUP BY<\/code> yan t\u00fcmcesi. Bu ikili, ham veriyi anlaml\u0131 \u00f6zetlere d\u00f6n\u00fc\u015ft\u00fcren temel mekanizmay\u0131 olu\u015fturur. Konuya yeni ba\u015flayanlar i\u00e7in bu kavramlar\u0131 ad\u0131m ad\u0131m a\u00e7\u0131klayal\u0131m.<\/p>\n<h3>SUM() Fonksiyonu Nedir ve Nas\u0131l Kullan\u0131l\u0131r?<\/h3>\n<p><code>SUM()<\/code> (Toplam), SQL&#8217;deki en s\u0131k kullan\u0131lan agrega fonksiyonlar\u0131ndan biridir. Belirtilen bir say\u0131sal s\u00fctundaki t\u00fcm de\u011ferlerin toplam\u0131n\u0131 hesaplamak i\u00e7in kullan\u0131l\u0131r. \u00d6rne\u011fin, bir sat\u0131\u015f tablosunda &#8216;miktar&#8217; s\u00fctununun toplam\u0131n\u0131 almak isterseniz <code>SUM(miktar)<\/code> yazars\u0131n\u0131z. Ancak <code>SUM()<\/code> tek ba\u015f\u0131na kullan\u0131ld\u0131\u011f\u0131nda, t\u00fcm tablo i\u00e7in tek bir toplam de\u011feri d\u00f6nd\u00fcr\u00fcr. Kategorilere g\u00f6re toplam almak istedi\u011fimizde ise devreye <code>GROUP BY<\/code> girer. \u0130\u015fte basit bir <code>SUM()<\/code> kullan\u0131m\u0131:<\/p>\n<pre><code>\nSELECT SUM(sat\u0131\u015f_tutar\u0131) AS ToplamSat\u0131\u015f FROM Sat\u0131\u015flar;\n<\/pre>\n<p><\/code><\/p>\n<p>Bu sorgu, <code>Sat\u0131\u015flar<\/code> tablosundaki t\u00fcm <code>sat\u0131\u015f_tutar\u0131<\/code> de\u011ferlerini toplar ve bize tek bir sonu\u00e7 verir. Ancak bizim amac\u0131m\u0131z, \u00f6rne\u011fin her \u00fcr\u00fcn kategorisi i\u00e7in ayr\u0131 ayr\u0131 toplam sat\u0131\u015flar\u0131 g\u00f6rmektir.<\/p>\n<h3>GROUP BY Yan T\u00fcmcesi Nedir ve Neden \u00d6nemlidir?<\/h3>\n<p><code>GROUP BY<\/code> yan t\u00fcmcesi, bir veya daha fazla s\u00fctundaki ayn\u0131 de\u011ferlere sahip sat\u0131rlar\u0131 grupland\u0131rmak i\u00e7in kullan\u0131l\u0131r. <code>SUM()<\/code>, <code>COUNT()<\/code>, <code>AVG()<\/code>, <code>MIN()<\/code>, <code>MAX()<\/code> gibi agrega fonksiyonlar\u0131yla birlikte kullan\u0131ld\u0131\u011f\u0131nda, her grubun kendi i\u00e7inde agrega i\u015flemini yapmas\u0131n\u0131 sa\u011flar. Yani, veri setini belirledi\u011finiz kategorilere g\u00f6re b\u00f6l\u00fcmlere ay\u0131r\u0131r ve her b\u00f6l\u00fcme ayr\u0131 ayr\u0131 toplama, sayma gibi i\u015flemleri uygular.<\/p>\n<p>Diyelim ki bir <code>\u00dcr\u00fcnler<\/code> tablonuz var ve bu tabloda \u00fcr\u00fcn <code>kategori<\/code>leri ve her \u00fcr\u00fcn\u00fcn <code>fiyat<\/code>\u0131 bulunuyor. Amac\u0131n\u0131z, her bir \u00fcr\u00fcn kategorisinin toplam fiyat\u0131n\u0131 bulmak. \u0130\u015fte burada <code>GROUP BY kategori<\/code> devreye girer. SQL motoru, <code>\u00dcr\u00fcnler<\/code> tablosundaki t\u00fcm sat\u0131rlar\u0131 tarar, 'elektronik', 'giyim', 'kitap' gibi benzersiz kategori de\u011ferlerini bulur ve ayn\u0131 kategoriye sahip sat\u0131rlar\u0131 bir araya getirir. Ard\u0131ndan, her bir grup i\u00e7in <code>SUM(fiyat)<\/code> i\u015flemini \u00e7al\u0131\u015ft\u0131r\u0131r. Sonu\u00e7 olarak, her kategori i\u00e7in ayr\u0131 ayr\u0131 toplam fiyat elde edersiniz. <code>GROUP BY<\/code> kullanmadan <code>SUM()<\/code> fonksiyonunu bir kategori s\u00fctunu ile birlikte kullanmaya \u00e7al\u0131\u015f\u0131rsan\u0131z, SQL size bir hata d\u00f6necektir, \u00e7\u00fcnk\u00fc hangi kategorinin toplam\u0131n\u0131 alaca\u011f\u0131n\u0131 bilemez.<\/p>\n<p>\u015eimdi \u00f6rnek bir <code>Sat\u0131\u015flar<\/code> tablosu \u00fczerinde bu kavram\u0131 peki\u015ftirelim:<\/p>\n<table border=\"1\">\n<thead>\n<tr>\n<th>sipari\u015f_id<\/th>\n<th>\u00fcr\u00fcn_kategori<\/th>\n<th>sat\u0131\u015f_tutar\u0131<\/th>\n<th>sat\u0131\u015f_tarihi<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>101<\/td>\n<td>Elektronik<\/td>\n<td>500<\/td>\n<td>2023-01-05<\/td>\n<\/tr>\n<tr>\n<td>102<\/td>\n<td>Giyim<\/td>\n<td>150<\/td>\n<td>2023-01-05<\/td>\n<\/tr>\n<tr>\n<td>103<\/td>\n<td>Elektronik<\/td>\n<td>800<\/td>\n<td>2023-01-06<\/td>\n<\/tr>\n<tr>\n<td>104<\/td>\n<td>Kitap<\/td>\n<td>75<\/td>\n<td>2023-01-06<\/td>\n<\/tr>\n<tr>\n<td>105<\/td>\n<td>Giyim<\/td>\n<td>200<\/td>\n<td>2023-01-07<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Yukar\u0131daki tabloda, <code>\u00fcr\u00fcn_kategori<\/code> s\u00fctununa g\u00f6re toplam sat\u0131\u015f tutar\u0131n\u0131 bulmak istiyorsak, sorgumuz \u015fu \u015fekilde olurdu:<\/p>\n<pre><code>\nSELECT\n    \u00fcr\u00fcn_kategori,\n    SUM(sat\u0131\u015f_tutar\u0131) AS KategoriToplamSat\u0131\u015f\nFROM\n    Sat\u0131\u015flar\nGROUP BY\n    \u00fcr\u00fcn_kategori;\n<\/pre>\n<p><\/code><\/p>\n<p>Bu sorgunun \u00e7\u0131kt\u0131s\u0131 \u015fu \u015fekilde olacakt\u0131r:<\/p>\n<table border=\"1\">\n<thead>\n<tr>\n<th>\u00fcr\u00fcn_kategori<\/th>\n<th>KategoriToplamSat\u0131\u015f<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Elektronik<\/td>\n<td>1300<\/td>\n<\/tr>\n<tr>\n<td>Giyim<\/td>\n<td>350<\/td>\n<\/tr>\n<tr>\n<td>Kitap<\/td>\n<td>75<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, <code>GROUP BY \u00fcr\u00fcn_kategori<\/code> sayesinde, her bir kategoriye ait sat\u0131\u015f tutarlar\u0131 kendi i\u00e7inde topland\u0131 ve bize ayr\u0131 ayr\u0131 sunuldu. Bu, veriye anlam katman\u0131n ve \u00f6zet bilgileri h\u0131zla elde etmenin en temel yoludur.<\/p>\n<h2>Ad\u0131m Ad\u0131m Kategori Bazl\u0131 Toplama Sorgular\u0131 Nas\u0131l Yaz\u0131l\u0131r?<\/h2>\n<p>Kategori bazl\u0131 toplama, veri analizi i\u00e7in vazge\u00e7ilmez bir ara\u00e7t\u0131r. \u015eimdi, farkl\u0131 senaryolarda bu sorgular\u0131 nas\u0131l yazaca\u011f\u0131m\u0131z\u0131 ad\u0131m ad\u0131m inceleyelim. A\u015fa\u011f\u0131daki \u00f6rneklerde, <code>Sat\u0131\u015flar<\/code> ad\u0131nda bir tablo kulland\u0131\u011f\u0131m\u0131z\u0131 ve bu tabloda <code>sipari\u015f_id<\/code>, <code>\u00fcr\u00fcn_kategori<\/code>, <code>b\u00f6lge<\/code>, <code>sat\u0131\u015f_tutar\u0131<\/code>, <code>sat\u0131\u015f_tarihi<\/code> gibi s\u00fctunlar bulundu\u011funu varsayal\u0131m.<\/p>\n<h3>Tek Bir Kategoriye G\u00f6re Toplama Nas\u0131l Yap\u0131l\u0131r?<\/h3>\n<p>En temel kullan\u0131m senaryosu, verileri tek bir kategoriye g\u00f6re grupland\u0131r\u0131p bir metrik \u00fczerinde toplama yapmakt\u0131r. \u00d6rne\u011fin, her bir \u00fcr\u00fcn kategorisinin toplam sat\u0131\u015f tutar\u0131n\u0131 bulmak isteyebiliriz. Bu, genellikle bir raporun ba\u015flang\u0131\u00e7 noktas\u0131 veya h\u0131zl\u0131 bir genel bak\u0131\u015f elde etmek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<pre><code>\nSELECT\n    \u00fcr\u00fcn_kategori,\n    SUM(sat\u0131\u015f_tutar\u0131) AS ToplamSat\u0131\u015f\nFROM\n    Sat\u0131\u015flar\nGROUP BY\n    \u00fcr\u00fcn_kategori\nORDER BY\n    ToplamSat\u0131\u015f DESC; -- En \u00e7ok satan kategoriyi g\u00f6rmek i\u00e7in s\u0131ralayabiliriz\n<\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki sorgu, <code>Sat\u0131\u015flar<\/code> tablosundaki her <code>\u00fcr\u00fcn_kategori<\/code> i\u00e7in toplam <code>sat\u0131\u015f_tutar\u0131<\/code>n\u0131 hesaplar. <code>ORDER BY ToplamSat\u0131\u015f DESC<\/code> ile sonu\u00e7lar\u0131 en y\u00fcksek toplam sat\u0131\u015fa sahip kategoriden ba\u015flayarak s\u0131ralayabiliriz, bu da en pop\u00fcler veya en karl\u0131 kategorileri h\u0131zla belirlememize yard\u0131mc\u0131 olur. Bu basit ama g\u00fc\u00e7l\u00fc sorgu, i\u015f performans\u0131n\u0131 izlemek i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<h3>Birden Fazla Kategoriye G\u00f6re Toplama Nas\u0131l Ger\u00e7ekle\u015ftirilir?<\/h3>\n<p>Tek bir kategoriden daha fazlas\u0131na g\u00f6re analiz yapmak istedi\u011fimizde, <code>GROUP BY<\/code> yan t\u00fcmcesine birden fazla s\u00fctun ekleyebiliriz. Bu, daha detayl\u0131 bir segmentasyon ve analiz sa\u011flar. \u00d6rne\u011fin, sadece \u00fcr\u00fcn kategorisine g\u00f6re de\u011fil, ayn\u0131 zamanda sat\u0131\u015f\u0131n yap\u0131ld\u0131\u011f\u0131 b\u00f6lgeye g\u00f6re de toplam sat\u0131\u015flar\u0131 g\u00f6rmek isteyebiliriz. Bu t\u00fcr bir analiz, b\u00f6lgesel farkl\u0131l\u0131klar\u0131, belirli \u00fcr\u00fcnlerin hangi b\u00f6lgelerde daha iyi performans g\u00f6sterdi\u011fini ortaya \u00e7\u0131karabilir.<\/p>\n<pre><code>\nSELECT\n    \u00fcr\u00fcn_kategori,\n    b\u00f6lge,\n    SUM(sat\u0131\u015f_tutar\u0131) AS B\u00f6lgeselKategoriToplamSat\u0131\u015f\nFROM\n    Sat\u0131\u015flar\nGROUP BY\n    \u00fcr\u00fcn_kategori, b\u00f6lge\nORDER BY\n    \u00fcr\u00fcn_kategori, B\u00f6lgeselKategoriToplamSat\u0131\u015f DESC;\n<\/pre>\n<p><\/code><\/p>\n<p>Bu sorgu, her <code>\u00fcr\u00fcn_kategori<\/code> ve <code>b\u00f6lge<\/code> kombinasyonu i\u00e7in ayr\u0131 ayr\u0131 toplam sat\u0131\u015f tutar\u0131n\u0131 hesaplar. \u00c7\u0131kt\u0131, her kategorinin farkl\u0131 b\u00f6lgelerdeki performans\u0131n\u0131 g\u00f6steren daha gran\u00fcler bir tablo olacakt\u0131r. \u00d6rne\u011fin, \"Elektronik\" kategorisinin \"Do\u011fu\" b\u00f6lgesindeki sat\u0131\u015flar\u0131 ile \"Bat\u0131\" b\u00f6lgesindeki sat\u0131\u015flar\u0131 ayr\u0131 ayr\u0131 g\u00f6rebiliriz. Bu, b\u00f6lgesel pazarlama stratejilerini veya \u00fcr\u00fcn da\u011f\u0131t\u0131m\u0131n\u0131 optimize etmek i\u00e7in de\u011ferli bilgiler sunar.<\/p>\n<h3>Ko\u015fullu Toplama (FILTER ve HAVING) \u0130\u015flemleri Nas\u0131l Yap\u0131l\u0131r?<\/h3>\n<p>Verileri toplarken belirli ko\u015fullar\u0131 da uygulamak isteyebiliriz. Bu noktada <code>WHERE<\/code> ve <code>HAVING<\/code> yan t\u00fcmceleri devreye girer. \u0130kisinin de amac\u0131 ko\u015ful belirtmek olsa da, kullan\u0131ld\u0131klar\u0131 a\u015famalar farkl\u0131d\u0131r ve bu fark \u00e7ok \u00f6nemlidir.<\/p>\n<h4>WHERE Yan T\u00fcmcesi ile Toplama \u00d6ncesi Filtreleme<\/h4>\n<p><code>WHERE<\/code> yan t\u00fcmcesi, <code>GROUP BY<\/code> i\u015flemi *\u00f6ncesinde* tek tek sat\u0131rlar\u0131 filtrelemek i\u00e7in kullan\u0131l\u0131r. Yani, sadece belirli kriterlere uyan sat\u0131rlar gruplama i\u015flemine dahil edilir. \u00d6rne\u011fin, sadece 2023 y\u0131l\u0131na ait sat\u0131\u015f verilerini veya belirli bir b\u00f6lgedeki sat\u0131\u015flar\u0131 toplamak isteyebiliriz.<\/p>\n<pre><code>\nSELECT\n    \u00fcr\u00fcn_kategori,\n    SUM(sat\u0131\u015f_tutar\u0131) AS 2023ToplamSat\u0131\u015f\nFROM\n    Sat\u0131\u015flar\nWHERE\n    sat\u0131\u015f_tarihi BETWEEN '2023-01-01' AND '2023-12-31'\n    AND b\u00f6lge = 'Bat\u0131'\nGROUP BY\n    \u00fcr\u00fcn_kategori\nORDER BY\n    2023ToplamSat\u0131\u015f DESC;\n<\/pre>\n<p><\/code><\/p>\n<p>Bu sorgu, ilk olarak <code>WHERE<\/code> ko\u015fuluna uyan (2023 y\u0131l\u0131na ait ve 'Bat\u0131' b\u00f6lgesinden gelen) t\u00fcm sat\u0131\u015f sat\u0131rlar\u0131n\u0131 filtreler. Daha sonra, kalan sat\u0131rlar\u0131 <code>\u00fcr\u00fcn_kategori<\/code>ye g\u00f6re grupland\u0131r\u0131r ve her kategori i\u00e7in toplam sat\u0131\u015f tutar\u0131n\u0131 hesaplar. Bu, belirli bir zaman dilimi veya co\u011frafi alan \u00fczerindeki performans\u0131 de\u011ferlendirmek i\u00e7in idealdir.<\/p>\n<h4>HAVING Yan T\u00fcmcesi ile Toplama Sonras\u0131 Filtreleme<\/h4>\n<p><code>HAVING<\/code> yan t\u00fcmcesi ise <code>GROUP BY<\/code> i\u015flemi *sonras\u0131nda*, yani gruplanm\u0131\u015f veriler ve agrega fonksiyonlar\u0131n\u0131n sonu\u00e7lar\u0131 \u00fczerinde ko\u015ful uygulamak i\u00e7in kullan\u0131l\u0131r. <code>WHERE<\/code> gibi tekil sat\u0131rlar\u0131 de\u011fil, olu\u015fturulmu\u015f gruplar\u0131 filtreler. \u00d6rne\u011fin, sadece toplam sat\u0131\u015f tutar\u0131 belirli bir e\u015fi\u011fin \u00fczerinde olan kategorileri g\u00f6rmek isteyebiliriz.<\/p>\n<pre><code>\nSELECT\n    \u00fcr\u00fcn_kategori,\n    SUM(sat\u0131\u015f_tutar\u0131) AS KategoriToplamSat\u0131\u015f\nFROM\n    Sat\u0131\u015flar\nGROUP BY\n    \u00fcr\u00fcn_kategori\nHAVING\n    SUM(sat\u0131\u015f_tutar\u0131) > 1000 -- Toplam sat\u0131\u015f tutar\u0131 1000'den fazla olan kategoriler\nORDER BY\n    KategoriToplamSat\u0131\u015f DESC;\n<\/pre>\n<p><\/code><\/p>\n<p>Bu sorgu, \u00f6nce t\u00fcm kategorilere g\u00f6re toplam sat\u0131\u015flar\u0131 hesaplar. Ard\u0131ndan, <code>HAVING<\/code> ko\u015fulunu uygulayarak, sadece <code>KategoriToplamSat\u0131\u015f<\/code> de\u011feri 1000'den b\u00fcy\u00fck olan kategorileri sonu\u00e7 olarak d\u00f6nd\u00fcr\u00fcr. Bu, \"en iyi performans g\u00f6steren kategoriler\", \"belirli bir e\u015fi\u011fi ge\u00e7en gruplar\" gibi analizler yapmak i\u00e7in hayati \u00f6neme sahiptir. <code>WHERE<\/code> ile <code>HAVING<\/code> aras\u0131ndaki temel fark\u0131 anlamak, do\u011fru ve verimli SQL sorgular\u0131 yazmak i\u00e7in kritik bir beceridir. <code>WHERE<\/code> bireysel sat\u0131rlar\u0131, <code>HAVING<\/code> ise gruplar\u0131 filtreler.<\/p>\n<h2>Daha Karma\u015f\u0131k Senaryolar: Alt Toplamlar ve Pencere Fonksiyonlar\u0131<\/h2>\n<p>Veri analizi ihtiya\u00e7lar\u0131 her zaman basit toplamlardan ibaret de\u011fildir. Bazen hiyerar\u015fik toplamlar, bazen de genel toplamla birlikte kategori i\u00e7i detaylar\u0131 g\u00f6rmek isteriz. SQL, bu karma\u015f\u0131k senaryolar i\u00e7in <code>GROUPING SETS<\/code>, <code>ROLLUP<\/code>, <code>CUBE<\/code> gibi alt toplam se\u00e7enekleri ve g\u00fc\u00e7l\u00fc pencere fonksiyonlar\u0131 sunar.<\/p>\n<h3>GROUPING SETS, ROLLUP ve CUBE ile Alt Toplamlar Nas\u0131l Olu\u015fturulur?<\/h3>\n<p>Geleneksel <code>GROUP BY<\/code> sadece belirtti\u011finiz s\u00fctun kombinasyonlar\u0131na g\u00f6re gruplama yapar. Ancak raporlamada s\u0131kl\u0131kla hem detayl\u0131 kategori toplamlar\u0131na hem de daha geni\u015f kapsaml\u0131 alt toplamlar veya genel toplamlara ihtiya\u00e7 duyar\u0131z. \u00d6rne\u011fin, hem \u00fcr\u00fcn kategorisi baz\u0131nda, hem b\u00f6lge baz\u0131nda, hem de genel toplam\u0131 tek bir sorgu ile elde etmek isteyebiliriz. \u0130\u015fte bu senaryolarda <code>GROUPING SETS<\/code>, <code>ROLLUP<\/code> ve <code>CUBE<\/code> \u00e7ok kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<h4>ROLLUP: Hiyerar\u015fik Alt Toplamlar<\/h4>\n<p><code>ROLLUP<\/code> yan t\u00fcmcesi, belirtti\u011finiz s\u00fctunlar\u0131n hiyerar\u015fisine g\u00f6re alt toplamlar ve genel toplam olu\u015fturur. \u00d6rne\u011fin, <code>GROUP BY ROLLUP(b\u00f6lge, \u00fcr\u00fcn_kategori)<\/code> yazarsan\u0131z, SQL \u015fu gruplamalar\u0131 yapar:<\/p>\n<ol>\n<li><code>b\u00f6lge<\/code> ve <code>\u00fcr\u00fcn_kategori<\/code> baz\u0131nda toplamlar (en detayl\u0131)<\/li>\n<li>Sadece <code>b\u00f6lge<\/code> baz\u0131nda toplamlar (\u00fcr\u00fcn kategorisi geneli)<\/li>\n<li>Genel toplam (t\u00fcm verinin toplam\u0131)<\/li>\n<\/ol>\n<pre><code>\nSELECT\n    b\u00f6lge,\n    \u00fcr\u00fcn_kategori,\n    SUM(sat\u0131\u015f_tutar\u0131) AS ToplamSat\u0131\u015f\nFROM\n    Sat\u0131\u015flar\nGROUP BY\n    ROLLUP(b\u00f6lge, \u00fcr\u00fcn_kategori)\nORDER BY\n    b\u00f6lge, \u00fcr\u00fcn_kategori;\n<\/pre>\n<p><\/code><\/p>\n<p>Bu sorgu, her b\u00f6lge-kategori kombinasyonunun toplam sat\u0131\u015f\u0131n\u0131, her b\u00f6lgenin kendi toplam sat\u0131\u015f\u0131n\u0131 (\u00fcr\u00fcn kategorisi k\u0131sm\u0131 <code>NULL<\/code> olacakt\u0131r) ve t\u00fcm tablonun genel toplam sat\u0131\u015f\u0131n\u0131 (hem b\u00f6lge hem \u00fcr\u00fcn kategorisi <code>NULL<\/code> olacakt\u0131r) tek bir sonu\u00e7 setinde g\u00f6sterir. Bu, hiyerar\u015fik raporlar olu\u015fturmak i\u00e7in son derece etkilidir.<\/p>\n<h4>CUBE: T\u00fcm Olas\u0131 Alt Toplamlar<\/h4>\n<p><code>CUBE<\/code> yan t\u00fcmcesi, <code>GROUP BY<\/code>'da belirtilen s\u00fctunlar\u0131n t\u00fcm olas\u0131 kombinasyonlar\u0131na g\u00f6re alt toplamlar olu\u015fturur. E\u011fer N s\u00fctun belirtirseniz, 2^N adet olas\u0131 gruplama kombinasyonu olu\u015fturur. <code>ROLLUP<\/code>'tan farkl\u0131 olarak, <code>CUBE<\/code> bir hiyerar\u015fi kabul etmez; t\u00fcm \u00e7apraz gruplamalar\u0131 da i\u00e7erir.<\/p>\n<pre><code>\nSELECT\n    b\u00f6lge,\n    \u00fcr\u00fcn_kategori,\n    SUM(sat\u0131\u015f_tutar\u0131) AS ToplamSat\u0131\u015f\nFROM\n    Sat\u0131\u015flar\nGROUP BY\n    CUBE(b\u00f6lge, \u00fcr\u00fcn_kategori)\nORDER BY\n    b\u00f6lge, \u00fcr\u00fcn_kategori;\n<\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki sorgu \u015fu gruplamalar\u0131 yapar:<\/p>\n<ol>\n<li><code>b\u00f6lge<\/code> ve <code>\u00fcr\u00fcn_kategori<\/code> baz\u0131nda toplamlar<\/li>\n<li>Sadece <code>b\u00f6lge<\/code> baz\u0131nda toplamlar<\/li>\n<li>Sadece <code>\u00fcr\u00fcn_kategori<\/code> baz\u0131nda toplamlar<\/li>\n<li>Genel toplam<\/li>\n<\/ol>\n<p><code>CUBE<\/code>, \u00f6zellikle ke\u015fifsel veri analizi yaparken ve verinin farkl\u0131 boyutlardaki t\u00fcm \u00f6zetlerini g\u00f6rmek istedi\u011finizde g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r.<\/p>\n<h4>GROUPING SETS: \u00d6zel Alt Toplamlar<\/h4>\n<p><code>GROUPING SETS<\/code> yan t\u00fcmcesi, <code>ROLLUP<\/code> ve <code>CUBE<\/code>'un sundu\u011fu esnekli\u011fin \u00f6tesine ge\u00e7erek, tam olarak hangi gruplama kombinasyonlar\u0131n\u0131 istedi\u011finizi belirtmenize olanak tan\u0131r. Yani, belirli kombinasyonlar\u0131 se\u00e7erek gereksiz alt toplamlar\u0131n olu\u015fmas\u0131n\u0131 engelleyebilirsiniz.<\/p>\n<pre><code>\nSELECT\n    b\u00f6lge,\n    \u00fcr\u00fcn_kategori,\n    SUM(sat\u0131\u015f_tutar\u0131) AS ToplamSat\u0131\u015f\nFROM\n    Sat\u0131\u015flar\nGROUP BY\n    GROUPING SETS (\n        (b\u00f6lge, \u00fcr\u00fcn_kategori), -- Detayl\u0131 gruplama\n        (b\u00f6lge),               -- B\u00f6lge baz\u0131nda toplam\n        (\u00fcr\u00fcn_kategori),       -- Kategori baz\u0131nda toplam\n        ()                     -- Genel toplam\n    )\nORDER BY\n    b\u00f6lge, \u00fcr\u00fcn_kategori;\n<\/pre>\n<p><\/code><\/p>\n<p>Bu sorgu, <code>CUBE<\/code> ile ayn\u0131 \u00e7\u0131kt\u0131y\u0131 \u00fcretecektir, ancak siz \u00f6zellikle bu kombinasyonlar\u0131 istedi\u011finizi a\u00e7\u0131k\u00e7a belirtmi\u015f olursunuz. E\u011fer sadece <code>(b\u00f6lge, \u00fcr\u00fcn_kategori)<\/code> ve <code>(b\u00f6lge)<\/code> kombinasyonlar\u0131n\u0131 isteseydiniz, <code>GROUPING SETS<\/code> i\u00e7inde yaln\u0131zca bu iki grubu tan\u0131mlayabilirdiniz. Bu, raporlama gereksinimlerinize tam olarak uyan \u00f6zel \u00f6zetler olu\u015fturmak i\u00e7in m\u00fckemmeldir.<\/p>\n<h3>Pencere Fonksiyonlar\u0131 ile Kategori \u0130\u00e7i ve Genel Toplamlar Nas\u0131l Hesaplan\u0131r?<\/h3>\n<p>Geleneksel <code>GROUP BY<\/code> ile toplama yapt\u0131\u011f\u0131n\u0131zda, sonu\u00e7 setindeki detay sat\u0131rlar\u0131 kaybedersiniz; sadece gruplanm\u0131\u015f \u00f6zetler kal\u0131r. Ancak bazen, her bir detay sat\u0131r\u0131n\u0131n yan\u0131nda ait oldu\u011fu grubun toplam\u0131n\u0131 veya t\u00fcm veri setinin genel toplam\u0131n\u0131 g\u00f6rmek isteriz. \u0130\u015fte bu ihtiyac\u0131 pencere fonksiyonlar\u0131 kar\u015f\u0131lar.<\/p>\n<p><code>SUM() OVER()<\/code> yap\u0131s\u0131, belirli bir pencere (yani, bir grup sat\u0131r) \u00fczerindeki toplam\u0131 hesaplarken, orijinal detay sat\u0131rlar\u0131n\u0131 kaybetmemizi sa\u011flar. <code>PARTITION BY<\/code> yan t\u00fcmcesi, pencereyi (gruplamay\u0131) tan\u0131mlar.<\/p>\n<pre><code>\nSELECT\n    sipari\u015f_id,\n    \u00fcr\u00fcn_kategori,\n    sat\u0131\u015f_tutar\u0131,\n    SUM(sat\u0131\u015f_tutar\u0131) OVER (PARTITION BY \u00fcr\u00fcn_kategori) AS KategoriToplamSat\u0131\u015f, -- Kategori i\u00e7i toplam\n    SUM(sat\u0131\u015f_tutar\u0131) OVER () AS GenelToplamSat\u0131\u015f -- T\u00fcm tablonun genel toplam\u0131\nFROM\n    Sat\u0131\u015flar\nORDER BY\n    \u00fcr\u00fcn_kategori, sipari\u015f_id;\n<\/pre>\n<p><\/code><\/p>\n<p>Bu sorguda:<\/p>\n<ul>\n<li><code>SUM(sat\u0131\u015f_tutar\u0131) OVER (PARTITION BY \u00fcr\u00fcn_kategori)<\/code>: Her bir sat\u0131r i\u00e7in, ait oldu\u011fu <code>\u00fcr\u00fcn_kategori<\/code> i\u00e7indeki t\u00fcm sat\u0131\u015f tutarlar\u0131n\u0131n toplam\u0131n\u0131 hesaplar. Bu toplam, ayn\u0131 kategorideki t\u00fcm sat\u0131rlar i\u00e7in tekrar edilir.<\/li>\n<li><code>SUM(sat\u0131\u015f_tutar\u0131) OVER ()<\/code>: Her bir sat\u0131r i\u00e7in, t\u00fcm tablodaki toplam sat\u0131\u015f tutar\u0131n\u0131 (genel toplam\u0131) hesaplar. Bu toplam, t\u00fcm sat\u0131rlar i\u00e7in ayn\u0131 olacakt\u0131r.<\/li>\n<\/ul>\n<p>Pencere fonksiyonlar\u0131, karma\u015f\u0131k analizler yaparken, \u00f6rne\u011fin bir \u00fcr\u00fcn\u00fcn sat\u0131\u015f\u0131n\u0131n kendi kategorisindeki toplam sat\u0131\u015fa oran\u0131n\u0131 hesaplamak gibi senaryolarda son derece kullan\u0131\u015fl\u0131d\u0131r. Orijinal detay verisini kaybetmeden, ayn\u0131 sorguda farkl\u0131 seviyelerdeki toplama de\u011ferlerini g\u00f6rmemizi sa\u011flar.<\/p>\n<div class=\"info-box\" style=\"border: 1px solid #ccc; padding: 10px; background-color: #f9f9f9; border-radius: 5px; margin-top: 15px;\">\n  <b>Uzman \u0130pucu:<\/b> Pencere fonksiyonlar\u0131, \u00f6zellikle b\u00fcy\u00fck veri setlerinde, karma\u015f\u0131k alt sorgular veya \u00e7oklu <code>GROUP BY<\/code> i\u015flemleri yerine kullan\u0131ld\u0131\u011f\u0131nda performans\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilir. Tek bir taramada birden fazla agrega de\u011ferini hesaplayabilir, bu da sorgu optimizasyonu a\u00e7\u0131s\u0131ndan b\u00fcy\u00fck avantaj sa\u011flar.\n<\/div>\n<h2>Ger\u00e7ek D\u00fcnya Senaryolar\u0131nda Kategori Bazl\u0131 Toplama Uygulamalar\u0131<\/h2>\n<p>SQL'de kategori bazl\u0131 toplama yetene\u011fi, i\u015f d\u00fcnyas\u0131n\u0131n bir\u00e7ok farkl\u0131 alan\u0131nda somut ve \u00f6l\u00e7\u00fclebilir de\u011fer yarat\u0131r. Sadece teorik bir bilgi olmaktan \u00f6te, \u015firketlerin stratejik kararlar almas\u0131nda, operasyonel verimlili\u011fi art\u0131rmas\u0131nda ve rekabet avantaj\u0131 elde etmesinde kilit rol oynar. \u0130\u015fte bu tekni\u011fin ger\u00e7ek d\u00fcnya senaryolar\u0131ndaki birka\u00e7 \u00e7arp\u0131c\u0131 uygulamas\u0131:<\/p>\n<h3>E-ticaret Analizi: En \u00c7ok Sat\u0131lan Kategoriler ve M\u00fc\u015fteri Davran\u0131\u015flar\u0131<\/h3>\n<p>Bir e-ticaret \u015firketi i\u00e7in \u00fcr\u00fcn kategorileri, gelir ve b\u00fcy\u00fcme potansiyelini anlamak ad\u0131na hayati \u00f6neme sahiptir. Kategori bazl\u0131 toplama, hangi \u00fcr\u00fcn gruplar\u0131n\u0131n pop\u00fcler oldu\u011funu, hangilerinin iyile\u015ftirmeye ihtiya\u00e7 duydu\u011funu ve m\u00fc\u015fteri tercihlerinin zaman i\u00e7inde nas\u0131l de\u011fi\u015fti\u011fini ortaya koyar. \u015eirket, bu verilerle stok y\u00f6netimini optimize edebilir, pazarlama b\u00fct\u00e7esini en karl\u0131 kategorilere y\u00f6nlendirebilir ve yeni \u00fcr\u00fcn geli\u015ftirme s\u00fcre\u00e7lerine y\u00f6n verebilir.<\/p>\n<pre><code>\n-- Her \u00fcr\u00fcn kategorisinin toplam gelirini bulan sorgu\nSELECT\n    pk.kategori_ad\u0131 AS \u00dcr\u00fcnKategorisi,\n    SUM(s.sat\u0131\u015f_tutar\u0131) AS ToplamGelir,\n    COUNT(DISTINCT s.m\u00fc\u015fteri_id) AS BenzersizM\u00fc\u015fteriSay\u0131s\u0131,\n    AVG(s.sat\u0131\u015f_tutar\u0131) AS OrtalamaSat\u0131\u015fTutar\u0131\nFROM\n    Sat\u0131\u015flar s\nJOIN\n    \u00dcr\u00fcnKategorileri pk ON s.\u00fcr\u00fcn_kategori_id = pk.kategori_id\nWHERE\n    s.sat\u0131\u015f_tarihi >= '2023-01-01' -- Belirli bir d\u00f6nem i\u00e7in\nGROUP BY\n    pk.kategori_ad\u0131\nHAVING\n    SUM(s.sat\u0131\u015f_tutar\u0131) > 50000 -- Sadece y\u00fcksek gelirli kategorileri g\u00f6ster\nORDER BY\n    ToplamGelir DESC;\n<\/pre>\n<p><\/code><\/p>\n<p>Bu sorgu, sadece her \u00fcr\u00fcn kategorisinin toplam gelirini bulmakla kalmaz, ayn\u0131 zamanda bu kategorilere ilgi g\u00f6steren benzersiz m\u00fc\u015fteri say\u0131s\u0131n\u0131 ve ortalama sat\u0131\u015f tutar\u0131n\u0131 da hesaplar. B\u00f6ylece, hem pop\u00fcler hem de y\u00fcksek de\u011ferli kategoriler belirlenerek, ki\u015fiselle\u015ftirilmi\u015f m\u00fc\u015fteri deneyimleri ve daha hedefli pazarlama kampanyalar\u0131 geli\u015ftirilebilir. \u00d6rne\u011fin, \"Elektronik\" kategorisinin geliri y\u00fcksek ama ortalama sat\u0131\u015f tutar\u0131 d\u00fc\u015f\u00fckse, bu kategoride daha y\u00fcksek fiyatl\u0131 \u00fcr\u00fcnlerin sat\u0131\u015f\u0131n\u0131 te\u015fvik etme stratejileri d\u00fc\u015f\u00fcn\u00fclebilir.<\/p>\n<h3>Finansal Raporlama: Gider Kategorilerine G\u00f6re B\u00fct\u00e7e Takibi<\/h3>\n<p>Her i\u015fletmenin finansal sa\u011fl\u0131\u011f\u0131 i\u00e7in giderlerin dikkatli bir \u015fekilde y\u00f6netilmesi gerekir. Kategori bazl\u0131 toplama, \u015firketlerin b\u00fct\u00e7elerini izlemesine, fazla harcamalar\u0131 tespit etmesine ve gelecekteki finansal planlamalar\u0131n\u0131 daha ger\u00e7ek\u00e7i bir \u015fekilde yapmas\u0131na olanak tan\u0131r. Muhasebe ve finans departmanlar\u0131, bu teknik sayesinde operasyonel maliyetleri etkin bir \u015fekilde kontrol edebilir.<\/p>\n<pre><code>\n-- Gider kalemlerinin kategori baz\u0131nda toplam\u0131n\u0131 ve ayl\u0131k da\u011f\u0131l\u0131m\u0131n\u0131 bulan sorgu\nSELECT\n    strftime('%Y-%m', gider_tarihi) AS Ay, -- SQLite i\u00e7in, di\u011fer DB'lerde farkl\u0131 olabilir\n    g.gider_kategori AS GiderKategorisi,\n    SUM(g.tutar) AS ToplamGider\nFROM\n    Giderler g\nWHERE\n    g.gider_tarihi BETWEEN '2023-01-01' AND '2023-12-31'\nGROUP BY\n    Ay, GiderKategorisi\nORDER BY\n    Ay, ToplamGider DESC;\n<\/pre>\n<p><\/code><\/p>\n<p>Bu sorgu, belirli bir y\u0131l i\u00e7indeki giderleri ayl\u0131k ve kategori baz\u0131nda \u00f6zetler. \"Seyahat\", \"Ofis Malzemeleri\", \"Pazarlama\" gibi gider kategorilerinin ayl\u0131k toplamlar\u0131n\u0131 g\u00f6rerek, b\u00fct\u00e7e a\u015f\u0131mlar\u0131 erken tespit edilebilir veya belirli d\u00f6nemlerde hangi gider kalemlerinin artt\u0131\u011f\u0131 anla\u015f\u0131labilir. Bu analiz, b\u00fct\u00e7eleme s\u00fcre\u00e7lerini iyile\u015ftirmek ve maliyetleri d\u00fc\u015f\u00fcrmek i\u00e7in kritik bilgiler sa\u011flar.<\/p>\n<h3>Pazarlama Kampanyalar\u0131: B\u00f6lgesel Performans Analizi<\/h3>\n<p>Pazarlama uzmanlar\u0131, kampanyalar\u0131n\u0131n etkinli\u011fini \u00f6l\u00e7mek ve gelecekteki stratejileri belirlemek i\u00e7in verilere g\u00fcvenirler. Kategori bazl\u0131 toplama, farkl\u0131 b\u00f6lgelerde, demografik gruplarda veya kampanya t\u00fcrlerinde harcamalar\u0131n veya d\u00f6n\u00fc\u015f\u00fcmlerin nas\u0131l da\u011f\u0131ld\u0131\u011f\u0131n\u0131 g\u00f6sterir. Bu sayede, pazarlama b\u00fct\u00e7esi en verimli alanlara y\u00f6nlendirilebilir.<\/p>\n<pre><code>\n-- Pazarlama kampanyas\u0131 performans\u0131n\u0131 b\u00f6lge ve kampanya t\u00fcr\u00fcne g\u00f6re analiz eden sorgu\nSELECT\n    pc.b\u00f6lge_ad\u0131 AS B\u00f6lge,\n    kt.kampanya_t\u00fcr\u00fc_ad\u0131 AS KampanyaT\u00fcr\u00fc,\n    SUM(pc.harcama) AS ToplamHarcama,\n    SUM(pc.d\u00f6n\u00fc\u015f\u00fcm_say\u0131s\u0131) AS ToplamD\u00f6n\u00fc\u015f\u00fcm\nFROM\n    PazarlamaKampanyalar\u0131 pc\nJOIN\n    KampanyaT\u00fcrleri kt ON pc.kampanya_t\u00fcr\u00fc_id = kt.t\u00fcr_id\nWHERE\n    pc.kampanya_tarihi BETWEEN '2023-01-01' AND '2023-03-31' -- \u0130lk \u00e7eyrek i\u00e7in\nGROUP BY\n    pc.b\u00f6lge_ad\u0131, kt.kampanya_t\u00fcr\u00fc_ad\u0131\nHAVING\n    SUM(pc.d\u00f6n\u00fc\u015f\u00fcm_say\u0131s\u0131) > 100 -- En az 100 d\u00f6n\u00fc\u015f\u00fcm getiren kampanyalar\u0131 g\u00f6ster\nORDER BY\n    ToplamD\u00f6n\u00fc\u015f\u00fcm DESC;\n<\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnek, belirli bir d\u00f6nemdeki pazarlama kampanyalar\u0131n\u0131n harcamalar\u0131n\u0131 ve d\u00f6n\u00fc\u015f\u00fcmlerini, hem b\u00f6lgeye hem de kampanya t\u00fcr\u00fcne g\u00f6re gruplayarak \u00f6zetler. \"Do\u011fu\" b\u00f6lgesindeki \"Sosyal Medya\" kampanyalar\u0131n\u0131n \"E-posta\" kampanyalar\u0131na g\u00f6re nas\u0131l bir performans g\u00f6sterdi\u011fini g\u00f6rebiliriz. Bu detayl\u0131 analiz, hangi b\u00f6lgesel pazarlama stratejilerinin daha iyi \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 ve hangi kampanya t\u00fcrlerinin daha y\u00fcksek d\u00f6n\u00fc\u015f\u00fcm getirdi\u011fini anlamak i\u00e7in zemin haz\u0131rlar, b\u00f6ylece gelecekteki pazarlama yat\u0131r\u0131mlar\u0131 daha bilin\u00e7li bir \u015fekilde yap\u0131labilir.<\/p>\n<h2>B\u00fcy\u00fck Veri Setlerinde Performans\u0131 Art\u0131rma \u0130pu\u00e7lar\u0131<\/h2>\n<p>Kategori bazl\u0131 toplama sorgular\u0131, k\u00fc\u00e7\u00fck veri setlerinde h\u0131zl\u0131 \u00e7al\u0131\u015fsa da, milyonlarca veya milyarlarca sat\u0131r i\u00e7eren b\u00fcy\u00fck veri setlerinde performans sorunlar\u0131 ya\u015fayabilir. Verimlilik, sadece do\u011fru sonu\u00e7lar\u0131 almakla kalmaz, ayn\u0131 zamanda bu sonu\u00e7lar\u0131 kabul edilebilir bir s\u00fcrede elde etmekle de ilgilidir. \u0130\u015fte b\u00fcy\u00fck veri setlerinde kategori bazl\u0131 toplama sorgular\u0131n\u0131z\u0131n performans\u0131n\u0131 art\u0131rmak i\u00e7in baz\u0131 \u00f6nemli ipu\u00e7lar\u0131:<\/p>\n<h3>\u0130ndeks Kullan\u0131m\u0131 ve Sorgu Optimizasyonu Nas\u0131l Yap\u0131l\u0131r?<\/h3>\n<p>\u0130ndeksler, veritaban\u0131 performans\u0131n\u0131 art\u0131rman\u0131n en temel ve en etkili yollar\u0131ndan biridir. Bir kitapta i\u00e7indekiler veya dizin b\u00f6l\u00fcm\u00fc gibi d\u00fc\u015f\u00fcnebilirsiniz; arad\u0131\u011f\u0131n\u0131z bilgiyi t\u00fcm sayfalar\u0131 taramak yerine do\u011frudan bulman\u0131z\u0131 sa\u011flar. <code>GROUP BY<\/code> ve <code>WHERE<\/code> yan t\u00fcmcelerinde kullan\u0131lan s\u00fctunlara indeks eklemek, sorgu h\u0131z\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilir.<\/p>\n<ul>\n<li><b><code>GROUP BY<\/code> S\u00fctunlar\u0131na \u0130ndeks Ekleme:<\/b> <code>GROUP BY<\/code> i\u015fleminde kullan\u0131lan s\u00fctunlar \u00fczerinde indeks olu\u015fturmak, veritaban\u0131 motorunun ilgili gruplar\u0131 daha h\u0131zl\u0131 bulmas\u0131na ve s\u0131ralamas\u0131na yard\u0131mc\u0131 olur. \u00d6rne\u011fin, <code>GROUP BY \u00fcr\u00fcn_kategori<\/code> kullan\u0131yorsan\u0131z, <code>\u00fcr\u00fcn_kategori<\/code> s\u00fctununda bir indeks olmal\u0131d\u0131r.<\/li>\n<li><b><code>WHERE<\/code> S\u00fctunlar\u0131na \u0130ndeks Ekleme:<\/b> <code>WHERE<\/code> yan t\u00fcmcesinde filtreleme i\u00e7in kulland\u0131\u011f\u0131n\u0131z s\u00fctunlara (\u00f6rne\u011fin <code>sat\u0131\u015f_tarihi<\/code>, <code>b\u00f6lge<\/code>) indeks eklemek, sorgunun ilgili sat\u0131rlar\u0131 \u00e7ok daha h\u0131zl\u0131 bir \u015fekilde se\u00e7mesini sa\u011flar.<\/li>\n<li><b>Birle\u015fik (Compound) \u0130ndeksler:<\/b> E\u011fer s\u0131k\u00e7a birden fazla s\u00fctunu hem <code>WHERE<\/code> hem de <code>GROUP BY<\/code> i\u00e7inde birlikte kullan\u0131yorsan\u0131z (\u00f6rne\u011fin <code>WHERE b\u00f6lge = &#039;X&#039; GROUP BY \u00fcr\u00fcn_kategori<\/code>), bu s\u00fctunlar \u00fczerinde birle\u015fik bir indeks olu\u015fturmay\u0131 d\u00fc\u015f\u00fcnebilirsiniz (<code>CREATE INDEX idx_bolge_kategori ON Sat\u0131\u015flar (b\u00f6lge, \u00fcr\u00fcn_kategori);<\/code>). \u0130ndeksteki s\u00fctunlar\u0131n s\u0131ras\u0131 \u00f6nemlidir; filtreleme i\u00e7in kullan\u0131lan s\u00fctunlar genellikle ilk s\u0131rada olmal\u0131d\u0131r.<\/li>\n<li><b>Sorgu Plan\u0131n\u0131 Anlama (<code>EXPLAIN ANALYZE<\/code>):<\/b> Bir sorgunun nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 anlamak i\u00e7in veritaban\u0131 sisteminizin <code>EXPLAIN<\/code> (veya <code>EXPLAIN ANALYZE<\/code> gibi varyantlar\u0131n\u0131) kullan\u0131n. Bu ara\u00e7, veritaban\u0131 motorunun sorguyu y\u00fcr\u00fctmek i\u00e7in hangi ad\u0131mlar\u0131 izledi\u011fini (tablo taramalar\u0131, indeks kullan\u0131mlar\u0131, s\u0131ralamalar vb.) g\u00f6sterir. Bu sayede, performans darbo\u011fazlar\u0131n\u0131 belirleyebilir ve indeks eksikliklerini veya verimsiz i\u015flemleri tespit edebilirsiniz.<\/li>\n<\/ul>\n<pre><code>\n-- \u00dcr\u00fcn kategori s\u00fctununa indeks olu\u015fturma \u00f6rne\u011fi\nCREATE INDEX idx_\u00fcr\u00fcn_kategori ON Sat\u0131\u015flar (\u00fcr\u00fcn_kategori);\n\n-- B\u00f6lge ve sat\u0131\u015f tarihi s\u00fctunlar\u0131na birle\u015fik indeks olu\u015fturma \u00f6rne\u011fi\nCREATE INDEX idx_b\u00f6lge_sat\u0131\u015f_tarihi ON Sat\u0131\u015flar (b\u00f6lge, sat\u0131\u015f_tarihi);\n\n-- Sorgu plan\u0131n\u0131 inceleme \u00f6rne\u011fi (PostgreSQL i\u00e7in)\nEXPLAIN ANALYZE\nSELECT\n    \u00fcr\u00fcn_kategori,\n    SUM(sat\u0131\u015f_tutar\u0131) AS ToplamSat\u0131\u015f\nFROM\n    Sat\u0131\u015flar\nWHERE\n    sat\u0131\u015f_tarihi BETWEEN '2023-01-01' AND '2023-12-31'\nGROUP BY\n    \u00fcr\u00fcn_kategori;\n<\/pre>\n<p><\/code><\/p>\n<p>\u0130ndekslerin do\u011fru kullan\u0131m\u0131, sorgular\u0131n\u0131z\u0131n disk I\/O'sunu azaltarak ve CPU kullan\u0131m\u0131n\u0131 optimize ederek \u00f6nemli \u00f6l\u00e7\u00fcde h\u0131zlanmas\u0131n\u0131 sa\u011flar. Ancak \u00e7ok fazla indeks olu\u015fturmak veya gereksiz indeksler tutmak, <code>INSERT<\/code>, <code>UPDATE<\/code>, <code>DELETE<\/code> i\u015flemlerini yava\u015flatabilir; bu y\u00fczden dengeli bir yakla\u015f\u0131m \u00f6nemlidir.<\/p>\n<h3>CTE'ler ve Alt Sorgular\u0131n Ak\u0131ll\u0131ca Kullan\u0131m\u0131<\/h3>\n<p>Karma\u015f\u0131k sorgular\u0131 daha anla\u015f\u0131l\u0131r ve bazen daha performansl\u0131 hale getirmek i\u00e7in Ortak Tablo \u0130fadeleri (CTE'ler - Common Table Expressions) ve alt sorgular\u0131 ak\u0131ll\u0131ca kullanmak \u00f6nemlidir.<\/p>\n<ul>\n<li><b>Ortak Tablo \u0130fadeleri (CTE'ler):<\/b> <code>WITH<\/code> anahtar kelimesiyle tan\u0131mlanan CTE'ler, sorguyu daha k\u00fc\u00e7\u00fck, y\u00f6netilebilir par\u00e7alara ay\u0131rman\u0131za olanak tan\u0131r. \u00d6zellikle birden fazla yerde ayn\u0131 ara sonucu kullanman\u0131z gerekti\u011finde, CTE'ler sorgu okunabilirli\u011fini art\u0131r\u0131r ve baz\u0131 durumlarda veritaban\u0131 motorunun bu ara sonu\u00e7lar\u0131 \u00f6nbelle\u011fe almas\u0131na veya daha verimli i\u015flemesine yard\u0131mc\u0131 olabilir.<\/li>\n<\/ul>\n<pre><code>\n-- CTE kullanarak kategori baz\u0131nda ortalama sat\u0131\u015flar\u0131 hesaplama ve ard\u0131ndan filtreleme\nWITH KategoriOrtalama AS (\n    SELECT\n        \u00fcr\u00fcn_kategori,\n        AVG(sat\u0131\u015f_tutar\u0131) AS OrtalamaSat\u0131\u015f\n    FROM\n        Sat\u0131\u015flar\n    GROUP BY\n        \u00fcr\u00fcn_kategori\n)\nSELECT\n    ko.\u00fcr\u00fcn_kategori,\n    ko.OrtalamaSat\u0131\u015f\nFROM\n    KategoriOrtalama ko\nWHERE\n    ko.OrtalamaSat\u0131\u015f > 300;\n<\/pre>\n<p><\/code><\/p>\n<ul>\n<li><b>Alt Sorgular (Subqueries):<\/b> Alt sorgular, bir sorgu i\u00e7inde ba\u015fka bir sorgu \u00e7al\u0131\u015ft\u0131rman\u0131za olanak tan\u0131r. Bunlar <code>SELECT<\/code>, <code>FROM<\/code>, <code>WHERE<\/code> veya <code>HAVING<\/code> yan t\u00fcmcelerinde kullan\u0131labilir. Alt sorgular\u0131n performans\u0131, kullan\u0131ld\u0131\u011f\u0131 yere ve veritaban\u0131 motorunun optimizasyon yeteneklerine ba\u011fl\u0131d\u0131r. B\u00fcy\u00fck veri setlerinde, \u00f6zellikle ba\u011f\u0131ml\u0131 alt sorgulardan ka\u00e7\u0131nmak (ana sorgunun her sat\u0131r\u0131 i\u00e7in tekrar tekrar \u00e7al\u0131\u015ft\u0131r\u0131lan alt sorgular) genellikle daha iyidir. Ba\u011f\u0131ms\u0131z alt sorgular veya <code>JOIN<\/code>'ler genellikle daha performansl\u0131d\u0131r.<\/li>\n<li><b><code>JOIN<\/code> vs. Alt Sorgu:<\/b> Baz\u0131 durumlarda, <code>JOIN<\/code> kullanarak elde edebilece\u011finiz sonu\u00e7lar\u0131 alt sorgularla da elde edebilirsiniz. Genellikle, <code>JOIN<\/code>'ler daha verimli kabul edilir \u00e7\u00fcnk\u00fc veritaban\u0131 motorlar\u0131 <code>JOIN<\/code> i\u015flemlerini optimize etmekte daha ba\u015far\u0131l\u0131d\u0131r. Ancak okunabilirlik veya belirli lojik gereksinimler nedeniyle alt sorgular tercih edilebilir. Performans i\u00e7in, her zaman en uygun y\u00f6ntemi (CTE, JOIN, alt sorgu, pencere fonksiyonu) se\u00e7meli ve sorgu planlar\u0131n\u0131 inceleyerek se\u00e7iminizi do\u011frulamal\u0131s\u0131n\u0131z.<\/li>\n<\/ul>\n<p>Bu optimizasyon tekniklerini kullanarak, SQL kategori toplama sorgular\u0131n\u0131z\u0131 sadece do\u011fru sonu\u00e7lar veren de\u011fil, ayn\u0131 zamanda b\u00fcy\u00fck veri setlerinde bile h\u0131zl\u0131 ve verimli \u00e7al\u0131\u015fan sorgular haline getirebilirsiniz. Unutmay\u0131n, iyi bir performans, veriye dayal\u0131 kararlar\u0131n zaman\u0131nda al\u0131nmas\u0131n\u0131 sa\u011flar.<\/p>\n<h2>Kategorilere G\u00f6re Toplama: Veri Analizinde G\u00fc\u00e7l\u00fc Bir Ara\u00e7<\/h2>\n<p>Bu makale boyunca, SQL'de kategorilere g\u00f6re veri toplaman\u0131n ne kadar temel ve g\u00fc\u00e7l\u00fc bir ara\u00e7 oldu\u011funu detaylar\u0131yla inceledik. Basit <code>SUM()<\/code> ve <code>GROUP BY<\/code> kombinasyonlar\u0131ndan ba\u015flayarak, <code>WHERE<\/code> ve <code>HAVING<\/code> ile ko\u015fullu filtrelemelere, <code>ROLLUP<\/code>, <code>CUBE<\/code>, <code>GROUPING SETS<\/code> ile hiyerar\u015fik ve \u00e7ok boyutlu \u00f6zetlere ve hatta pencere fonksiyonlar\u0131yla detay sat\u0131rlar\u0131n\u0131 koruyarak analiz yapmaya kadar bir\u00e7ok farkl\u0131 tekni\u011fi ele ald\u0131k. Her bir teknik, i\u015f d\u00fcnyas\u0131n\u0131n farkl\u0131 ihtiya\u00e7lar\u0131na yan\u0131t veren \u00f6zelle\u015ftirilmi\u015f \u00e7\u00f6z\u00fcmler sunmaktad\u0131r.<\/p>\n<p>Kategorilere g\u00f6re toplama, e-ticaretten finansa, pazarlamadan \u00fcretime kadar her sekt\u00f6rde veri odakl\u0131 kararlar alman\u0131n kilit noktas\u0131d\u0131r. Hangi \u00fcr\u00fcn kategorisinin en \u00e7ok gelir getirdi\u011fini, giderlerin hangi kalemlerde yo\u011funla\u015ft\u0131\u011f\u0131n\u0131, pazarlama kampanyalar\u0131n\u0131n hangi b\u00f6lgelerde daha etkili oldu\u011funu bu sayede anlamak m\u00fcmk\u00fcnd\u00fcr. Ger\u00e7ek d\u00fcnya senaryolar\u0131nda g\u00f6sterdi\u011fimiz gibi, bu yetenek sadece raporlama i\u00e7in de\u011fil, ayn\u0131 zamanda stratejik planlama, b\u00fct\u00e7eleme, stok y\u00f6netimi ve m\u00fc\u015fteri ili\u015fkileri gibi kritik i\u015f s\u00fcre\u00e7lerini optimize etmek i\u00e7in de vazge\u00e7ilmezdir. B\u00fcy\u00fck veri setlerinde performans sorunlar\u0131n\u0131 a\u015fmak i\u00e7in indeksleme, CTE'ler ve sorgu plan\u0131 analizi gibi optimizasyon tekniklerinin \u00f6nemini de vurgulad\u0131k.<\/p>\n<p>Veri analizi yolculu\u011funuzda, SQL'in bu g\u00fc\u00e7l\u00fc \u00f6zelliklerini ustal\u0131kla kullanmak, sadece veriyi de\u011fil, verinin ard\u0131ndaki hikayeyi de anlaman\u0131za yard\u0131mc\u0131 olacakt\u0131r. Bu sayede, daha bilin\u00e7li, daha h\u0131zl\u0131 ve daha etkili kararlar alarak rekabet avantaj\u0131 sa\u011flayabilirsiniz. SQL'de kategori toplama yetene\u011fi, her veri profesyonelinin ara\u00e7 kutusunda bulunmas\u0131 gereken temel bir beceridir ve bu makale, bu beceriyi edinmeniz ve geli\u015ftirmeniz i\u00e7in kapsaml\u0131 bir rehber niteli\u011findedir.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<h4>1. <code>GROUP BY<\/code> olmadan <code>SUM<\/code> kullanabilir miyim?<\/h4>\n<p>Evet, kullanabilirsiniz. Ancak bu durumda <code>SUM<\/code> fonksiyonu, sorgulad\u0131\u011f\u0131n\u0131z tablonun tamam\u0131 i\u00e7in tek bir toplam de\u011feri d\u00f6nd\u00fcr\u00fcr. Kategorilere g\u00f6re ayr\u0131 ayr\u0131 toplamlar almak istiyorsan\u0131z, <code>GROUP BY<\/code> kullanman\u0131z zorunludur. \u00d6rne\u011fin, <code>SELECT SUM(sat\u0131\u015f_tutar\u0131) FROM Sat\u0131\u015flar;<\/code> t\u00fcm tablonun toplam sat\u0131\u015f\u0131n\u0131 verirken, <code>SELECT \u00fcr\u00fcn_kategori, SUM(sat\u0131\u015f_tutar\u0131) FROM Sat\u0131\u015flar GROUP BY \u00fcr\u00fcn_kategori;<\/code> her kategori i\u00e7in ayr\u0131 ayr\u0131 toplam sat\u0131\u015flar\u0131 verir.<\/p>\n<h4>2. <code>NULL<\/code> de\u011ferler toplama i\u015flemlerini nas\u0131l etkiler?<\/h4>\n<p><code>SUM()<\/code> gibi agrega fonksiyonlar\u0131, hesaplama yaparken <code>NULL<\/code> de\u011ferleri otomatik olarak yoksayar. Yani, bir s\u00fctunda <code>NULL<\/code> bir de\u011fer varsa, bu de\u011fer toplama i\u015flemine dahil edilmez. Bu genellikle beklenen davran\u0131\u015ft\u0131r, ancak <code>NULL<\/code> de\u011ferlerin s\u0131f\u0131r olarak kabul edilmesini istiyorsan\u0131z, <code>COALESCE()<\/code> veya <code>ISNULL()<\/code> gibi fonksiyonlarla <code>NULL<\/code> de\u011ferleri \u00f6nceden s\u0131f\u0131ra d\u00f6n\u00fc\u015ft\u00fcrmeniz gerekebilir (\u00f6rne\u011fin <code>SUM(COALESCE(sat\u0131\u015f_tutar\u0131, 0))<\/code>).<\/p>\n<h4>3. <code>HAVING<\/code> ile <code>WHERE<\/code> aras\u0131ndaki temel fark nedir?<\/h4>\n<p><code>WHERE<\/code> yan t\u00fcmcesi, <code>GROUP BY<\/code> i\u015flemi *\u00f6ncesinde*, tek tek sat\u0131rlar\u0131 filtrelemek i\u00e7in kullan\u0131l\u0131r. Sadece belirli ko\u015fullar\u0131 sa\u011flayan ham veriler gruplama i\u015flemine dahil edilir. <code>HAVING<\/code> yan t\u00fcmcesi ise <code>GROUP BY<\/code> i\u015flemi *sonras\u0131nda*, yani gruplanm\u0131\u015f veriler ve agrega fonksiyonlar\u0131n\u0131n sonu\u00e7lar\u0131 \u00fczerinde ko\u015ful uygulamak i\u00e7in kullan\u0131l\u0131r. \u00d6zetle, <code>WHERE<\/code> sat\u0131rlar\u0131, <code>HAVING<\/code> gruplar\u0131 filtreler.<\/p>\n<h4>4. Ayn\u0131 anda birden fazla kategoriye g\u00f6re toplama yapmak m\u00fcmk\u00fcn m\u00fc?<\/h4>\n<p>Kesinlikle evet. <code>GROUP BY<\/code> yan t\u00fcmcesine istedi\u011finiz kadar s\u00fctun ekleyebilirsiniz. \u00d6rne\u011fin, <code>GROUP BY b\u00f6lge, \u00fcr\u00fcn_kategori, y\u0131l<\/code> gibi bir ifadeyle sat\u0131\u015flar\u0131n\u0131z\u0131 hem b\u00f6lgeye, hem \u00fcr\u00fcn kategorisine, hem de y\u0131la g\u00f6re gruplayarak \u00e7ok boyutlu analizler yapabilirsiniz. S\u00fctunlar\u0131n s\u0131ras\u0131, hiyerar\u015fik bir anlam ta\u015f\u0131yorsa \u00f6nemlidir, ancak fonksiyonel olarak her kombinasyon i\u00e7in ayr\u0131 bir grup olu\u015fturur.<\/p>\n<h4>5. <code>GROUPING SETS<\/code> ne zaman <code>ROLLUP<\/code>'a tercih edilmeli?<\/h4>\n<p><code>ROLLUP<\/code>, belirli bir hiyerar\u015fiye g\u00f6re alt toplamlar olu\u015fturur (\u00f6rne\u011fin A, B i\u00e7in: (A, B), (A), ()). E\u011fer raporunuzda bu standart hiyerar\u015fik toplamlar yeterliyse <code>ROLLUP<\/code> daha k\u0131sa ve okunakl\u0131 olabilir. Ancak, belirli bir hiyerar\u015fi d\u0131\u015f\u0131nda kalan, \u00f6zelle\u015ftirilmi\u015f ve standart olmayan gruplama kombinasyonlar\u0131na ihtiyac\u0131n\u0131z varsa (<code>GROUPING SETS ((A,B), (B), (C))<\/code>), <code>GROUPING SETS<\/code> tercih edilmelidir. <code>GROUPING SETS<\/code>, size istedi\u011finiz gruplama kombinasyonlar\u0131n\u0131 tam olarak belirtme esnekli\u011fi sunar, bu da gereksiz alt toplamlar\u0131n olu\u015fmas\u0131n\u0131 engeller ve daha temiz bir \u00e7\u0131kt\u0131 sa\u011flar.<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"B\u00fcy\u00fck veri setleri aras\u0131nda kaybolmadan anlaml\u0131 sonu\u00e7lar \u00e7\u0131karmak ve i\u015f kararlar\u0131n\u0131z\u0131 verilere dayand\u0131rmak m\u0131 istiyorsunuz? SQL&#8217;de kategorilere g\u00f6re&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":[1505],"tags":[],"class_list":{"0":"post-33949","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 ile Kategorilere G\u00f6re Veri Toplama ve Analizi<\/title>\n<meta name=\"description\" content=\"B\u00fcy\u00fck veri setleri aras\u0131nda kaybolmadan anlaml\u0131 sonu\u00e7lar \u00e7\u0131karmak ve i\u015f kararlar\u0131n\u0131z\u0131 verilere dayand\u0131rmak m\u0131 istiyorsunuz? SQL&#039;de kategorilere g\u00f6re veri toplama, karma\u015f\u0131k bilgileri anla\u015f\u0131l\u0131r \u00f6zetlere d\u00f6n\u00fc\u015ft\u00fcrmenize olanak tan\u0131r. Bu teknik makalede, veri analizi ve raporlaman\u0131n temel ta\u015flar\u0131ndan biri olan kategori bazl\u0131 toplama i\u015flemlerini s\u0131f\u0131rdan ileri seviyeye kadar ad\u0131m ad\u0131m ele alaca\u011f\u0131z.\" \/>\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\/sql-ile-kategorilere-gore-veri-toplama-ve-analizi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SQL ile Kategorilere G\u00f6re Veri Toplama ve Analizi\" \/>\n<meta property=\"og:description\" content=\"B\u00fcy\u00fck veri setleri aras\u0131nda kaybolmadan anlaml\u0131 sonu\u00e7lar \u00e7\u0131karmak ve i\u015f kararlar\u0131n\u0131z\u0131 verilere dayand\u0131rmak m\u0131 istiyorsunuz? SQL&#039;de kategorilere g\u00f6re veri toplama, karma\u015f\u0131k bilgileri anla\u015f\u0131l\u0131r \u00f6zetlere d\u00f6n\u00fc\u015ft\u00fcrmenize olanak tan\u0131r. Bu teknik makalede, veri analizi ve raporlaman\u0131n temel ta\u015flar\u0131ndan biri olan kategori bazl\u0131 toplama i\u015flemlerini s\u0131f\u0131rdan ileri seviyeye kadar ad\u0131m ad\u0131m ele alaca\u011f\u0131z.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/sql-ile-kategorilere-gore-veri-toplama-ve-analizi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-09T03:30:58+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=\"26 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sql-ile-kategorilere-gore-veri-toplama-ve-analizi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sql-ile-kategorilere-gore-veri-toplama-ve-analizi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"SQL ile Kategorilere G\u00f6re Veri Toplama ve Analizi\",\"datePublished\":\"2025-11-09T03:30:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sql-ile-kategorilere-gore-veri-toplama-ve-analizi\/\"},\"wordCount\":4156,\"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\/sql-ile-kategorilere-gore-veri-toplama-ve-analizi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sql-ile-kategorilere-gore-veri-toplama-ve-analizi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/sql-ile-kategorilere-gore-veri-toplama-ve-analizi\/\",\"name\":\"SQL ile Kategorilere G\u00f6re Veri Toplama ve Analizi\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-09T03:30:58+00:00\",\"description\":\"B\u00fcy\u00fck veri setleri aras\u0131nda kaybolmadan anlaml\u0131 sonu\u00e7lar \u00e7\u0131karmak ve i\u015f kararlar\u0131n\u0131z\u0131 verilere dayand\u0131rmak m\u0131 istiyorsunuz? SQL'de kategorilere g\u00f6re veri toplama, karma\u015f\u0131k bilgileri anla\u015f\u0131l\u0131r \u00f6zetlere d\u00f6n\u00fc\u015ft\u00fcrmenize olanak tan\u0131r. Bu teknik makalede, veri analizi ve raporlaman\u0131n temel ta\u015flar\u0131ndan biri olan kategori bazl\u0131 toplama i\u015flemlerini s\u0131f\u0131rdan ileri seviyeye kadar ad\u0131m ad\u0131m ele alaca\u011f\u0131z.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sql-ile-kategorilere-gore-veri-toplama-ve-analizi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/sql-ile-kategorilere-gore-veri-toplama-ve-analizi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/sql-ile-kategorilere-gore-veri-toplama-ve-analizi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SQL ile Kategorilere G\u00f6re Veri Toplama ve Analizi\"}]},{\"@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 ile Kategorilere G\u00f6re Veri Toplama ve Analizi","description":"B\u00fcy\u00fck veri setleri aras\u0131nda kaybolmadan anlaml\u0131 sonu\u00e7lar \u00e7\u0131karmak ve i\u015f kararlar\u0131n\u0131z\u0131 verilere dayand\u0131rmak m\u0131 istiyorsunuz? SQL'de kategorilere g\u00f6re veri toplama, karma\u015f\u0131k bilgileri anla\u015f\u0131l\u0131r \u00f6zetlere d\u00f6n\u00fc\u015ft\u00fcrmenize olanak tan\u0131r. Bu teknik makalede, veri analizi ve raporlaman\u0131n temel ta\u015flar\u0131ndan biri olan kategori bazl\u0131 toplama i\u015flemlerini s\u0131f\u0131rdan ileri seviyeye kadar ad\u0131m ad\u0131m ele alaca\u011f\u0131z.","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\/sql-ile-kategorilere-gore-veri-toplama-ve-analizi\/","og_locale":"tr_TR","og_type":"article","og_title":"SQL ile Kategorilere G\u00f6re Veri Toplama ve Analizi","og_description":"B\u00fcy\u00fck veri setleri aras\u0131nda kaybolmadan anlaml\u0131 sonu\u00e7lar \u00e7\u0131karmak ve i\u015f kararlar\u0131n\u0131z\u0131 verilere dayand\u0131rmak m\u0131 istiyorsunuz? SQL'de kategorilere g\u00f6re veri toplama, karma\u015f\u0131k bilgileri anla\u015f\u0131l\u0131r \u00f6zetlere d\u00f6n\u00fc\u015ft\u00fcrmenize olanak tan\u0131r. Bu teknik makalede, veri analizi ve raporlaman\u0131n temel ta\u015flar\u0131ndan biri olan kategori bazl\u0131 toplama i\u015flemlerini s\u0131f\u0131rdan ileri seviyeye kadar ad\u0131m ad\u0131m ele alaca\u011f\u0131z.","og_url":"https:\/\/fatihsoysal.com\/blog\/sql-ile-kategorilere-gore-veri-toplama-ve-analizi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-09T03:30:58+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"26 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/sql-ile-kategorilere-gore-veri-toplama-ve-analizi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/sql-ile-kategorilere-gore-veri-toplama-ve-analizi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"SQL ile Kategorilere G\u00f6re Veri Toplama ve Analizi","datePublished":"2025-11-09T03:30:58+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/sql-ile-kategorilere-gore-veri-toplama-ve-analizi\/"},"wordCount":4156,"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\/sql-ile-kategorilere-gore-veri-toplama-ve-analizi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/sql-ile-kategorilere-gore-veri-toplama-ve-analizi\/","url":"https:\/\/fatihsoysal.com\/blog\/sql-ile-kategorilere-gore-veri-toplama-ve-analizi\/","name":"SQL ile Kategorilere G\u00f6re Veri Toplama ve Analizi","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-09T03:30:58+00:00","description":"B\u00fcy\u00fck veri setleri aras\u0131nda kaybolmadan anlaml\u0131 sonu\u00e7lar \u00e7\u0131karmak ve i\u015f kararlar\u0131n\u0131z\u0131 verilere dayand\u0131rmak m\u0131 istiyorsunuz? SQL'de kategorilere g\u00f6re veri toplama, karma\u015f\u0131k bilgileri anla\u015f\u0131l\u0131r \u00f6zetlere d\u00f6n\u00fc\u015ft\u00fcrmenize olanak tan\u0131r. Bu teknik makalede, veri analizi ve raporlaman\u0131n temel ta\u015flar\u0131ndan biri olan kategori bazl\u0131 toplama i\u015flemlerini s\u0131f\u0131rdan ileri seviyeye kadar ad\u0131m ad\u0131m ele alaca\u011f\u0131z.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/sql-ile-kategorilere-gore-veri-toplama-ve-analizi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/sql-ile-kategorilere-gore-veri-toplama-ve-analizi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/sql-ile-kategorilere-gore-veri-toplama-ve-analizi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"SQL ile Kategorilere G\u00f6re Veri Toplama ve Analizi"}]},{"@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\/33949","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=33949"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/33949\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=33949"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=33949"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=33949"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}