Tagmysql

MySQL SUM, MIN, MAX Kullanımı

Merhaba arkadaşlar bu yazımda sizlere MySQL deki SUM, MIN, MAX gibi kavramları açıklayacağım. Bu kavramlar genel olarak bir sütunda ki verileri toplamak için ve ya o sütundaki minimum ve maksimum değerleri bulmak için kullanılır.

Şimdi bu kavramları anlatırken kullanacağım örnek tabloyu size göstermek gerekirse

calisanlar isimli tablo

Şimdi bu tabloyu mesleklere göre listeleyip aldıkları minimum, maksimum maaşları ve toplamda 3 şehirde aldıkları maaşların toplamını bulalım.

SUM()

SUM(), bir sütundaki verilerin toplamını verir. Yani sorgumuz şu şekilde olursa

SELECT SUM(MAAS) FROM calisanlar;

bize sadece maas sütunundaki verileri döndürecektir.

Eğer mesleklere göre ayırmak istiyorsanız GROUP BY kullanarak bu işlemi yapabiliriz yani

SELECT meslek, MAX(MAAS) FROM calisanlar GROUP BY meslek;

sorgusunu çalıştırdığımız da meslek adı ve 3 şehirde aldıkları toplam maaşı gösteren bir tablo ile karşılaşırız.

MIN()

MIN() ise adında anlaşılacağı gibi bir sütundaki Minimum değeri bize döndürür. Yukarıda da yaptığımız gibi öncelikle tüm tablodaki en düşük maas’i çekmeye çalışırsak.

SELECT MIN(MAAS) FROM calisanlar;

şeklinde bir sorgu olurdu ama bu hangi mesleğe ait onu öğrenmek biraz problem oluşturuyor bu yüzden GROUP BY kullanarak her mesleğin aldığı minimum maaslari listelemek istersek.

SELECT meslek, MIN(MAAS) FROM calisanlar GROUP BY meslek;

şeklinde sorgumuzu çalıştırdığımız da her mesleğin aldığı minimum maaş değerlerini görebiliriz.

MAX()

Son olarak MAX() da bir sütundaki maksimum değeri bize geri döndürmek için vardır. Hine en yüksek maas’i bulmaya çalışalım

SELECT MAX(MAAS) FROM calisanlar;

şeklinde çalıştırdığımız da bize en yüksek maaş olan 5500 değerini döndürecektir. Ben bunu her meslek için ayrı ayrı yapmak istiyorsam.

SELECT meslek, MAX(MAAS) FROM calisanlar GROUP BY meslek;

şeklinde yazdığımız da meslek adı ve aldıkları maksimum maaşı görüntüleyebiliyoruz.

Şimdi bunların 3 ünü ayrı ayrı yaptık ama her birini kontrol etmek için farklı farklı sorguları çalıştırıp not mu almak gerekiyor tabi ki hayır.

Meslek isimlerine göre aldıkları MIN(MAAS), MAX(MAAS) ve SUM(MAAS)’ı tek bir sorgu ile halledebiliriz.

SELECT meslek, MIN(MAAS) as Minimum, MAX(MAAS) as Maksimum, SUM(MAAS) as Toplam FROM calisanlar GROUP BY meslek;

Bu sorguyu çalıştırdıktan sonra karşımıza çıkacak sonuç şu şekildedir.

Özet,

Bu yazımda SUM(), MAX(), MIN() gibi kavramları açıkladım bunların nasıl çalıştıklarını ve belirli bir kritere göre nasıl listelenebileceğinden bahsettim. Ayrıca bunların 3’ünün aynı anda nasıl kullanılabileceğinden bahsettim.

Genel olarak MySQL hakkında planladığım yazılar başlangıç için bu kadardı fakat hine zaman zaman MySQL hakkındada yeni içerikler girmeye başlayacağım. O zamana kadar MySQL hakkında yazmış olduğum diğer yazıları incelemek için buraya tıklayınız.

Verilerde Gruplama (GROUP BY) ve HAVING Kullanımı

Merhaba arkadaşlar bu yazımda sizlere Verilerde Gruplama (GROUP BY) ve HAVING kullanımından bahsedeceğim. GROUP BY ve HAVING’i genel olarak belirli istatistikler çıkartmak için kullanabiliriz.

Bu yazımda öncelikle GROUP BY’dan ve daha sonra ise HAVING’den bahsedeceğim. GROUP BY ve HAVING’i anlatırken kullanacağım örnek tablonun içeriği aşağıdaki gibidir

calisanlar isimli örnek tablo

Bu tablomuzda mesleklerin şehirlere göre aldığı maaşları ele aldındığını görebilirsiniz.

GROUP BY

GROUP BY işlemi verilerde gruplama yapmamızı sağlar. Nasıl yani diye sorarsanız şöyle açıklamam gerekir. Yukarıdaki örnek tablomuzda 3 farklı mesleğin 3 farklı şehirde aldığı maaşları görmekteyiz. Aynı meslek farklı şehirlerde farklı maaşlar alabiliyor. Biz ise GROUP BY’ı kullanarak bu 3 şehirde her mesleğin aldığı minimum ve maksimum maaş miktarlarını istiyoruz. O zaman şöyle bir sorgu yazmamız gerekicektir.

SELECT meslek, MIN(MAAS) as Minimum, MAX(MAAS) as Maksimum FROM calisanlar GROUP BY meslek;

şeklindeki sorgumuzu çalıştırdığımız zaman karşımıza şu şekilde bir sanal tablo çıkacaktır.

Bu tabloyu şöyle yorumlayabiliriz. Aşçılar bu 3 şehirde en az 3500 TL, en fazla 5500 TL maaş alıyor. Elektrikçiler en az 1500 en fazla 4000 TL maaş alıyor ve Freelancer ise en az 2900 TL en fazla 5000 TL maaş almaktadır. Buradaki değerleri tamamen ben sallamış olsam da gerçek bir veri olsaydı bu sorgu ile bu kadar veri karşımıza çıkacaktı.

Bu sorgudaki MIN(MAAS) as Minimum ve MAX(MAAS) as Maksimum kısmını ileri ki yazılarımda detaylı bir şekilde anlatıcak olsam bile şöyle kısaca açıklayabilirim.

“MIN(MAAS)” maas sütunundaki en düşük değeri verir “MAX(MAAS)” ise maas sütunundaki en yüksek değeri. Buradaki “as Minimum” ve “as Maksimum” kısımları ise karşımıza çıkacak sanal tabloda ki en az ve en fazla maaş değerlerini gösterecek sütunların isimlerini belirtmek için vardır.

Şimdi ben diyorum ki minimum maaşı 2000 tl üstünde olanları gösterelim sadece bunu WHERE ile yapabiliriz değil mi deneyim o zaman sorgumuza şöyle bir güncelleme getirelim.

SELECT meslek, MIN(MAAS) as Minimum, MAX(MAAS) as Maksimum FROM calisanlar WHERE Minimum > 2000 GROUP BY meslek;

Baktığımız zaman Minimum sütunundaki değerlerin 2000 den büyük olanları seçmemizi istiyor doğru gibi duruyor. Bu sorguyu çalıştırırsak karşımıza şöyle bir sonuç çıkar.

Bu hatada Minimum adında bir sütun olmadığını bizlere söylüyor aslında haklı gerçekten de yok işte bu tarz bir işlem yapmak istersek HAVING’i kullanıyoruz.

HAVING

HAVING, aslında WHERE ile neredeyse aynı işlemleri yapıyor ama sadece GROUP BY kullanıldıktan sonra kullanılabiliniyor. Şimdi minimum maaşı 2000 den fazla olanları göstermek için WHERE “Minimum > 2000” kısmını silip sorgumuzu şu hale getirelim.

SELECT meslek, MIN(MAAS) as Minimum, MAX(MAAS) as Maksimum FROM calisanlar GROUP BY meslek HAVING Minimum > 2000;

Gördüğünüz gibi WHERE ile aynı maktıkta çalıştı ama sadece Veri Gruplama(Kümeleme) işlemi yapılırken kullanılıyor.

Özet,

Bu yazımda sizlere Veri Gruplama(Kümeleme) yani GROUP BY ve HAVING kullanımından bahsettim. GROUP BY’ın gruplama işlemini yaparken HAVING ise bir yardımcı eleman olarak WHERE yapacağı işlemi burada yapmasını sağladığından bahsettim.

Bir sonraki yazımda Verilerde Arama işlemlerinden yani LIKE ve IN kullanımından bahsedeceğim. O zamana kadar MySQL hakkında yazmış olduğum diğer yazıları merak ediyorsanız buraya tıklayabilirsiniz.

MySQL LIMIT Kullanımı

Merhaba arkadaşlar bu yazımda sizlere MySQL LIMIT kullanımından bahsedeceğim.

LIMIT sözcüğü aslında listelediğimiz tüm verileri değil fakat belirli bir kısmını listelememiz konusunda yardımcı oluyor. LIMIT sözcüğünün genel kullanım alanları için herhangi bir blogda anasayfayı açtığınız da karşınıza sadece sınırlı sayıda yazının çıkmasını ve ya sayfalama işlemlerini örnek olarak verebiliriz.

Yukarıda verdiğim örneklerden de yola çıkarak LIMIT sözcüğünü genel olarak listeleme işlemlerin de kullanıldığını görebilirsiniz.

Şimdi bunun kullanımı için basit bir örnek ile açıklama gerekirse

Örnek için kullanıcağımız örnek users isimli tablo

Şimdi ben bu tabloda ki verileri id değeri çoktan aza doğru sıralarken ki ilk 3 veriyi almak istiyorsam. Şöyle bir sorgu yazmam gerekir

SELECT * FROM users ORDER BY id DESC LIMIT 3;

Bu sorguyu yazıp çalıştırdığımız zaman karşımıza çıkan görüntü şu şekilde olacaktır.

Peki ben en sondaki veriyi listelemeye dahil etmek istemiyorum ve bundan sonraki 3 veriyi istiyorsam nasıl bir işlem yapabilirim diye bir sorunuz varsa bunu WHERE ile de yapabilirsiniz LIMIT ile de şu an LIMIT konusunu incelediğimiz için LIMIT ile bunun nasıl yapıldığından bahsedeceğim.

SELECT * FROM users ORDER BY id DESC LIMIT 1,3;

şeklinde sorgumuzu çalıştırırsak karşımıza çıkacak sonuç şu şekilde olacaktır.

Peki şimdi bu sorgu da ne yaptık da bu sonuç ile karşılaştık. Burada ki asıl önemli olan durum LIMIT 1,3 kısmı burada demek istediğimiz. users tablosunda ki son 3 elemanı seç ve daha sonra satır yukarı çıkmasını söylüyoruz.

Özet,

Bu yazımda sizlere MySQL LIMIT kullanımından bahsettim. LIMIT’in listeleyebileceğimiz veri sayısını nereden başlayarak listeleme yapacağımızı bize söylediğinden bahsettik ve bunları 2 adet örnek ile açıkladık.

Bir sonraki yazım da Verilerde Gruplama (GROUP BY) ve Having kullanımından bahsedeceğim. O zamana kadar MySQL hakkında diğer yazılarımı incelemek için buraya tıklayınız.