Temel Veritabanı Eğitimi | 13 – Group By ve Having Kullanımı

GROUP BY Kullanımı

GROUP BY, bir tablodaki satırları gruplamak için kullanılır. Yani satırları küçük gruplara ayırırız.

SELECT department_id, AVG(salary) FROM employees
GROUP BY department_id;

Yukarıdaki örneğe bakacak olursak, “employees tablosundan department_id ‘ yi ve ortalama maaşı getir, getirirken department_id ‘ ye göre grupla” demiş olduk.

Yani department_id si 20 olanların ortalama maaşını, 30 olanların ortalama maaşını bilmem kaç olanların ortalama maaşını getir demiş olduk.

Yukarıdaki resimde de görüldüğü gibi department_id ‘ si 100 olanların ortalama maaşı 8600 iken department_id ‘ si 30 olanların ortalama maaşı 4150 olarak gözükmektedir. Yani department_id ‘ yi baz alarak gruplara ayırmış olduk.

HAVING Kullanımı

GROUP BY ile gruplandırılanlar HAVING kullanılarak kısıtlanabilir. Örnek üzerinden gidersek daha iyi anlayacaksın.

SELECT department_id, MAX(salary) FROM employees
GROUP BY department_id
HAVING   MAX(salary)>10000 ;

Burada kullanacağımız cümle şöyle olmalıdır.

Employees tablosunu department_id ‘ ye göre grupla, grupladıktan sonra department_id ‘ yi ve maximum salary ‘ yi getir ama bir şartım var. Department_id ‘ ye göre grupladıktan sonra o departmanda çalışan herhangi birinin salary ‘ si  10000 ‘ den büyük ise onu getir. Eğer department_id ‘ ye göre grupladıktan sonra o departmanda çalışan kişilerden herhangi birinin maaşı 10000 den yüksek değilse o kayıtları getirme!

Buradaki mantığı şöyle açıklayabilirim. Diyelim ki 10 numaralı departmanda 5 işçi çalışıyor. Bu 5 işçinin aldığı maaşlar sırasıyla 3400, 4000, 5000, 7000 ve 8000 olsun. HAVING ile belirttiğim kısıtta maaşı 10000 den yüksek olanlar demiştim. O yüzden 10 numaralı departman kayıtları gösterilmedi.

100 numaralı departman gösterildi çünkü 100 numaralı departmanda herhangi bir kişinin veya birden fazla kişinin maaşı 10000 den yüksek. 10000 den yüksek maaşlı olan birçok kişi var olsa da ben maximum maaşı istedim. Bu yüzden 100 numaralı departmanda çalışan işçiler arasında en yüksek maaş 12000 olarak karşıma geldi.

Cumhuriyet Üniversitesi Yönetim Bilişim Sistemleri Bölümü 4. sınıf öğrencisi olan Yeşiltepe, Certified Ethical Hacker ve Sızma Testi eğitimleri almıştır. Kendisini Network, System ve Cyber Intelligence alanlarında yetiştirmektedir. Bulunduğu üniversitede Siber Güvenlik Topluluğu kurucusu olan Yeşiltepe, bilgi güvenliği farkındalığını artırmak ve siber güvenlik alanında yetişecek insan sayısına katkıda bulunmak için çeşitli çalışmalar yürütmektedir. 2018 yılının son aylarına doğru p4wsec takımını kurduktan sonra ekip arkadaşları ile birlikte Vulnerable VM çözümlerini yayımlayarak bu alana ilgi duyan kişilerin farklı yöntemler öğrenmelerine katkı sağlamaya devam etmektedir.