SQL Senaryoları – 2

Selamlar,

Kaldığımız yerden senaryo üretmeye devam ediyoruz.

4) Şirketin her departmana aylık ne kadar maaş verdiğini bulalım. Çıktımız şu şekilde olmalı;

Öncelikle Departman isimlerini alabilmek için ‘Employees’ ve ‘Departments’ tablolarını join’lemem gerekiyor. Daha sonra “Departman_name” alanına göre gruplayıp “Salary” alanlarını da toplamam gerekli. Yani;

SELECT
 d.department_name "Departman Adı", SUM(e.salary) "Toplam Maaş"
FROM
 EMPLOYEES E JOIN DEPARTMENTS D
ON (e.department_id = d.department_id)
GROUP BY D.DEPARTMENT_NAME
ORDER BY 2 DESC;

 

 

5) Yine yukarıdaki gibi bir senaryomuz var. Bu sefer departmanlara göre değil de hangi mesleğe toplam ne kadar maaş veriliyor ona bakalım ve maaşa göre azalan olacak şekilde sıralayalım.

Yani istediğimiz rapor şu;

Bunun için öncelikle hangi tablolara join atıcaz onu belirlemeliyiz. Maaş bilgisi lazım olduğu için 1. tablomuz “EMPLOYEES” tablosu. Meslek bilgileri ise “JOB” tablosunda. Bu 2 tabloya join atıp “JOB_ID” alanına göre gruplama yapacağız ve maaş alanlarını toplayacağız. Bakınız ;

SELECT
 j.job_title "Meslek" , SUM(e.salary) "Toplam Maaş"
FROM
 EMPLOYEES E JOIN JOBS J
ON (e.job_id=J.JOB_ID)
GROUP BY j.job_tıtle
ORDER BY 2 DESC;

 

 

6) Bu senaryomuzda çalışanlar ve müdürlerinin listesini raporlayalım. Yani istediğimiz çıktı ;

Bu raporu alabilmek için self join kullanıcaz. Yani EMPLOYEE tablosuna yine kendisi ile join atıcaz. Toplam 106 satır gelmeli. Bakınız;

SELECT
 E1.LAST_NAME "Çalışan", E2.LAST_NAME "Müdür"
FROM
 EMPLOYEES E1 JOIN EMPLOYEES E2
ON (E1.MANAGER_ID= E2.EMPLOYEE_ID);

Kolay gelsin.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s