
- AVG fonksiyonu
- SUM fonksiyonu
- MIN fonksiyonu
- MAX fonksiyonu
- COUNT fonksiyonu
- DISTINCT fonksiyonu
- GROUP BY ifadesi
- HAVING ifadesi
Tek satır fonksiyonları, tablonun bir satırına uygulanabiliyor ve buna karşılık gelen bir sonuç satırı elde edilebiliyor.
Bir grup satıra bir fonksiyonun uygulanması söz konusu ise; “çoklu satır” ya da bir başka deyişle “grup fonksiyonlarından” söz edilir.
Grup fonksiyonları tablonun tüm satırlarına uygulanabildiği gibi, GROUP BY sözcüğü yardımıyla da alt gruplara uygulanabilir.
AVG VE SUM
ÖRNEK: Personellerin ortalama ve toplam maaşlarını listeleyelim
SELECT AVG(salary), SUM(salary) FROM hr.employees;
MIN VE MAX
ÖRNEK: Personellerin en düşük ve en yüksek maaşlarını listeleyelim
SELECT MIN(salary), MAX(salary) FROM hr.employees;
DISTINCT
DISTINCT komutu, verilen sütun yada sütunlardaki verileri gruplayarak, sonuçların birkez gösterilmesini sağlar.
ÖRNEK : Şirketteki İş Pozisyonlarını listeleyelim (Job_id)
SELECT DISTINCT job_id FROM hr.employees;
COUNT
ÖRNEK : Toplam kaç personel bulunduğunu ve kaç farklı pozisyon bulunduğunu listeleyelim
SELECT COUNT(*),COUNT(distinct job_id) FROM hr.employees;
GROUP BY İFADESİ
- GROUP BY cümleciğiyle tablodaki satırları daha küçük gruplara bölünebilir.
- GROUP BY fonksiyonu içindeki sütunları SELECT içerisine dahil etmek zorunluluğu vardır. Grup fonksiyonları ile kullanılan sütunlar bu kuralın dışındadır.
- GROUP BY fonksiyonu içinde sütun alias’ları kullanılamaz.
ÖRNEK : Müdürlüklerin ortalama maaşlarını listeleyelim
SELECT department_id, AVG(salary)
FROM hr.employees
GROUP BY department_id ORDER BY 1;
ÖRNEK : Personellerin bulunduğu müdürlükteki, pozisyonlarına göre ortalama ve toplam maaşları listeleyelim
select department_id, job_id, avg(salary) “ortala maaş”, sum(salary) “toplam maaş”,count(*) personel_sayısı
from hr.employees
group by department_id, job_id order by 1
HAVING İFADESİ
- WHERE ifadesinde gruplar kısıtlanamaz
- WHERE ifadesinde grup fonksiyonları kullanılamaz
- Grup kısıtlamasında HAVING ifadesi kullanılır
ÖRNEK : Maaş ortalaması 10000 den büyük olan pozisyonları listeleyelim
SELECT job_id, avg(salary)
FROM hr.employees
GROUP BY job_id
HAVING avg(salary)>10000 ;
ÖRNEK : Pozisyon adında REP geçmeyenlerin, toplam maaşı 50000 den büyük pozisyonları listeleyelim
select job_id, sum(salary)
from hr.employees where job_id not like ‘%REP%’
group by job_id
having sum(salary)>50000
İÇ-İÇE GRUP FONKSİYONLAR
ÖRNEK : En yüksek maaş ortalaması ve buna sahip departmanı listeleyelim
select DEPARTMENT_ID, avg(salary)
FROM hr.employees
group by DEPARTMENT_ID
having (max(salary))>all(select avg(salary) from hr.employees group by department_id)
Bir yanıt yazın