18 Şubat 2017

Oracle PL/SQL COUNT, GROUP BY, HAVING, ORDER BY Kullanımı

Oracle PL/SQL COUNT, GROUP BY, HAVING, ORDER BY Kullanımı

Oracle PL/SQL'de COUNT, GROUP BY, HAVING, ORDER BY komutlarının kullanımlarını örnekle göstereceğim. Genelde verilerin sayısını bulmada veya kaç tane veriden kaç adet tekrarlamış gibi işlemleri bu operatörlerle yapıyoruz.

COUNT komutu kolondaki veya tablodaki veri sayısını öğrenmek için kullandığımız komuttur. Tüm tablodaki kayıtları öğrenmek için;
SELECT COUNT(*) FROM HR.EMPLOYEES

Bir kolona ait veri sayısını öğrenmek için;
SELECT COUNT(PHONE_NUMBER) FROM HR.EMPLOYEES

Başka örnke kullanım, iki defa ve tekrarsız COUNT kullanımı;
SELECT COUNT(*),COUNT(DISTINCT JOB_ID) FROM HR.EMPLOYEES

Hangi Datadan kaç tane tekrar etmiş(Çoklama) ve kaç adet aynı Data vardır kontrol etmek için;
SELECT SALARY,COUNT(SALARY) FROM HR.EMPLOYEES
GROUP BY SALARY
HAVING COUNT(SALARY)>1

AVG: Ortalama Değer
SUM: Değerlerin Toplamı
MIN: Minimum Değer
MAX: Maksimum Değer
STDDEV: Standart Sapma

Ortalama(AVG) ve Toplam(SUM) SALARY değerlerini hesaplayalım;
SELECT AVG(SALARY),SUM(SALARY) FROM HR.EMPLOYEES

En düşük(MIN) ve En yüksek(MAX) SALARY değerlerini hesaplayalım;
SELECT MIN(SALARY),MAX(SALARY) FROM HR.EMPLOYEES

En düşük SALARY bilgisini GROUP BY ile listeleyelim ve küçükten büyüğe göre sıralama ORDER BY yapalım;
SELECT DEPARTMENT_ID, MIN(SALARY) FROM HR.EMPLOYEES 
GROUP BY DEPARTMENT_ID
ORDER BY 1

HAVING kullanımına örnek verecek olursak, GROUP BY kullanımı yaptığınız zaman WHERE ifadesinde grup fonksiyonları kullanılamaz. Bu yüzden filtreleme için HAVING ifadesi kullanılır.

SALARY ortalaması 1000 den büyük olan verileri listeleyelim;
SELECT JOB_ID, AVG(SALARY) FROM HR.EMPLOYEES 
GROUP BY JOB_ID
HAVING AVG(SALARY)>1000

ORDER BY kullanımına örnek verecek olursak, Genelde SQL komutunun en sonuna yazılır ve sıralama için kullanılır. ASC ifadesi küçükten büyüğe, DESC ifadesi büyükten küçüğe veya güncelden eskiye sıralamaktadır.

SELECT SALARY FROM HR.EMPLOYEES
ORDER BY SALARY ASC

SELECT SALARY,HIRE_DATE FROM HR.EMPLOYEES
ORDER BY SALARY DESC,HIRE_DATE ASC