İşlevleri Toplama MySQL
Toplama İşlevleri tamamen
- Birden fazla satırda hesaplama yapma
- Bir tablonun tek bir sütununun
- Ve tek bir değer döndürüyoruz.
ISO standardı beş (5) toplu işlevi tanımlar;
1) SAYI
2) TOPLA
3) AVG
4) DAKİKA
5) MAKS
Neden Toplu İşlevleri Kullanmalı?
Bir iş perspektifinden bakıldığında, farklı organizasyon seviyelerinin farklı bilgi gereksinimleri vardır. Üst düzey yöneticiler genellikle tüm rakamları bilmekle ilgilenirler ve bireysel ayrıntıları bilmek zorunda değillerdir.
Toplama işlevleri, veritabanımızdan kolayca özetlenmiş veriler üretmemize olanak tanır.
Örneğin, myflix veritabanımızdan, yönetim aşağıdaki raporları talep edebilir
- En az kiralanan filmler.
- En çok kiralanan filmler
- Her filmin bir ayda kiralandığı ortalama sayı.
Toplu işlevleri kullanarak yukarıdaki raporları kolayca üretiyoruz.
Toplama işlevlerine ayrıntılı olarak bakalım.
COUNT işlevi
COUNT işlevi, belirtilen alandaki toplam değer sayısını döndürür. Hem sayısal hem de sayısal olmayan veri türlerinde çalışır. Tüm toplama işlevleri, veriler üzerinde çalışmadan önce varsayılan olarak boş değerleri hariç tutar.
COUNT (*), belirtilen tablodaki tüm satırların sayısını döndüren COUNT işlevinin özel bir uygulamasıdır. COUNT (*) aynı zamanda dikkate alır nulls ve kopyalar.
Aşağıda gösterilen tablo, film kiralama tablosundaki verileri göstermektedir
referans numarası | İşlem Tarihi | dönüş tarihi | Üye numarası | film_id | movie_ geri döndü |
---|---|---|---|---|---|
11 | 20-06-2012 | NULL | 1 | 1 | 0 |
12 | 22-06-2012 | 25-06-2012 | 1 | 2 | 0 |
13 | 22-06-2012 | 25-06-2012 | 3 | 2 | 0 |
14 | 21-06-2012 | 24-06-2012 | 2 | 2 | 0 |
15 | 23-06-2012 | NULL | 3 | 3 | 0 |
Diyelim ki kimliği 2 olan filmin kaç kez kiralandığını öğrenmek istiyoruz
SELECT COUNT(`movie_id`) FROM `movierentals` WHERE `movie_id` = 2;
Yukarıdaki sorgunun çalıştırılması MySQL tezgâh myflixdb'ye karşı yaptığımız arama bize şu sonuçları veriyor.
COUNT('movie_id') |
---|
3 |
FARKLI Anahtar Kelime
Sonuçlarımızdan kopyaları çıkarmamıza olanak tanıyan DISTINCT anahtar kelimesi. Bu, benzer değerlerin bir arada gruplanmasıyla elde edilir.
Farklı kavramını anlamak için basit bir sorgu çalıştıralım
SELECT `movie_id` FROM `movierentals`;
movie_id |
---|
1 |
2 |
2 |
2 |
3 |
Şimdi aynı sorguyu farklı anahtar kelimeyle çalıştıralım.
SELECT DISTINCT `movie_id` FROM `movierentals`;
Aşağıda gösterildiği gibi, ayrı, yinelenen kayıtları sonuçlardan çıkarır.
movie_id |
---|
1 |
2 |
3 |
MIN işlevi
MIN işlevi belirtilen tablo alanındaki en küçük değeri döndürür.
Örnek olarak kütüphanemizdeki en eski filmin vizyona girdiği yılı bilmek istediğimizi varsayalım. MySQLİstenilen bilgiyi elde etmek için MIN fonksiyonu.
Aşağıdaki sorgu bunu başarmamıza yardımcı olur
SELECT MIN(`year_released`) FROM `movies`;
Yukarıdaki sorgunun çalıştırılması MySQL workbench'ü myflixdb ile karşılaştırdığımızda aşağıdaki sonuçları elde ediyoruz.
MIN('year_released') |
---|
2005 |
MAX işlevi
Adından da anlaşılacağı gibi MAX işlevi, MIN işlevinin tam tersidir. BT belirtilen tablo alanından en büyük değeri döndürür.
Veritabanımızdaki en son filmin vizyona girdiği yılı almak istediğimizi varsayalım. Bunu başarmak için MAX fonksiyonunu kolaylıkla kullanabiliriz.
Aşağıdaki örnek, en son yayınlanan film yılını döndürür.
SELECT MAX(`year_released`) FROM `movies`;
Yukarıdaki sorgunun çalıştırılması MySQL myflixdb'yi kullanarak workbench'te yaptığımız çalışma bize şu sonuçları veriyor.
MAX('year_released') |
---|
2012 |
TOPLA işlevi
Şu ana kadar yapılan ödemelerin toplam tutarını veren bir rapor istediğimizi varsayalım. Şunu kullanabiliriz: MySQL SUM hangi işlev belirtilen sütundaki tüm değerlerin toplamını döndürür. SUM yalnızca sayısal alanlarda çalışır. Boş değerler döndürülen sonuçtan hariç tutulur.
Aşağıdaki tablo ödemeler tablosundaki verileri göstermektedir.
ödeme_kimliği | Üye numarası | ödeme tarihi | tanım | ödenen miktar | harici_ referans _numarası |
---|---|---|---|---|---|
1 | 1 | 23-07-2012 | Film kiralama ödemesi | 2500 | 11 |
2 | 1 | 25-07-2012 | Film kiralama ödemesi | 2000 | 12 |
3 | 3 | 30-07-2012 | Film kiralama ödemesi | 6000 | NULL |
Aşağıda gösterilen sorgu, yapılan tüm ödemeleri alır ve tek bir sonuç verecek şekilde toplar.
SELECT SUM(`amount_paid`) FROM `payments`;
Yukarıdaki sorgunun çalıştırılması MySQL workbench'ü myflixdb'ye karşı çalıştırmak aşağıdaki sonuçları veriyor.
SUM('amount_paid') |
---|
10500 |
AVG işlev
MySQL AVG işlev belirtilen bir sütundaki değerlerin ortalamasını döndürür. SUM işlevi gibi, yalnızca sayısal veri türlerinde çalışır.
Ödenen ortalama tutarı bulmak istediğimizi varsayalım. Aşağıdaki sorguyu kullanabiliriz –
SELECT AVG(`amount_paid`) FROM `payments`;
Yukarıdaki sorgunun çalıştırılması MySQL workbench, bize şu sonuçları veriyor.
AVG('amount_paid') |
---|
3500 |
Zeka oyunu
Toplu işlevlerin kolay olduğunu düşünüyorsunuz. Bunu dene!
Aşağıdaki örnek üyeleri adlarına göre gruplandırır, toplam ödeme sayısını, ortalama ödeme tutarını ve ödeme tutarlarının genel toplamını sayar.
SELECT m.`full_names`,COUNT(p.`payment_id`) AS `paymentscount`,AVG(p.`amount_paid`) AS `averagepaymentamount`,SUM(p.`amount_paid`) AS `totalpayments` FROM members m, payments p WHERE m.`membership_number` = p.`membership_number` GROUP BY m.`full_names`;
Yukarıdaki örneğin yürütülmesi MySQL workbench bize şu sonuçları veriyor.
ÖZET
- MySQL COUNT, SUM, beş (5) ISO standart toplama işlevinin tümünü destekler AVG, MIN ve MAX.
- TOPLA ve AVG işlevler yalnızca sayısal veriler üzerinde çalışır.
- Yinelenen değerleri toplu işlev sonuçlarından hariç tutmak istiyorsanız DISTINCT anahtar sözcüğünü kullanın. ALL anahtar sözcüğü çift kopyaları da içerir. Hiçbir şey belirtilmezse ALL varsayılan olarak kabul edilir.
- Toplama işlevleri aşağıdakiler gibi diğer SQL cümlecikleriyle birlikte kullanılabilir: GROUP BY