Veri Tabanı-I 12.Hafta İlişkisel sorgular 1
GROUP BY having Gruplayarak listelemek. Gruplama işlemi bir veya birden çok alana göre yapılabilir. Select from arasında yazılan alanlar mutlaka GROUP BY işlemine girmelidir. Gruplanmış bir alan listede bir kez olur. Having ile gruplanmış alanlar üzerinde koşul verilebilir SELECT c1,c2,... cn, kümeleme_fonksiyonları( ifade ) FROM tablolar WHERE where_koşulu GROUP BY c1, c2,... cn HAVING grup_koşulu ORDER BY sıralama_kolonları kümeleme_fonksiyonları : sum(), max(), min(), avg(), count() 2
GROUP BY having -- her müşterinin yaptığı harcamalar toplamı SELECT mno, sum(*) as Tutar FROM GROUP BY mno -- a adına ve son kullanma ine göre gruplandırarak listele SELECT adi, FROM GROUP BY adi, sonlultar ORDER BY -- tablosundaki sayısı 1 den çok olan malların grup halinde numarası ve kalan toplamı SELECT sno, sum() as Adedi FROM GROUP BY sno Having count(*) >1 -- tablosundaki ı 12 liradan fazla olan malların grup halinde numarasına göre gruplu bir şekilde toplamını listele SELECT sno, sum() FROM GROUP BY sno HAVING >12 -- HATALIDIR 3 SELECT * FROM GROUP BY adi
GROUP BY having -- öğrenci tablosunda her bölümün en yüksek ortalamalar SELECT bolum, Max( vize*0.2+final*0.8) FROM ogrenci GROUP BY bolum -- öğrenci tablosunda her bölümün, finali 50 den büyük olanlar içinden en yüksek ortalamalar SELECT ulke, sehir FROM ogrenci_bilgi GROUP BY ulke, sehir -- öğrenci tablosunda her bölümün, finali 50 den büyük olanlar içinden en yüksek ortalamalar SELECT bolum, Max( vize*0.2+final*0.8) FROM ogrenci WHERE final>50 GROUP BY bolum 4
İlişkisel sorgular Tablo1 Kolon1 Kolon2 Kolon3 Tablo2 Kolon1 Kolon2 Kolon3 Tablo3 Kolon1 Kolon2 Kolon3 SELECT tablo1.kolon1, tablo1.kolon2, tablo2.kolon1, tablo2.kolon2, tablo3.kolon1, tablo3.kolon2,., tablo1.kolonn,., tablo2.kolonn,., tablo3.kolonn, FROM tablo1, tablo2, tablo3 WHERE tablo1.kolon1 = tablo2.kolon1 AND tablo2.kolon1 = tablo3.kolon1 5
İlişkisel sorgular sno Satış adedi Satış ı Tutar Satış Tarihi SELECT.sno,.,. AS [Satış Adedi],. AS [Satış Fiyatı], (., *.) as Tutar,. AS [Satış Tarihi] FROM, WHERE.sno =.sno 6
İlişkisel sorgular sno Satış adedi Satış ı Tutar Satış Tarihi SELECT.sno,.,. AS [Satış Adedi],. AS [Satış Fiyatı], (., *.) as Tutar,. AS [Satış Tarihi] FROM, WHERE.sno =.sno AND.sno=101 ORDER BY. DESC 7
İlişkisel sorgular sno Satış adedi Satış ı Tutar Satış Tarihi Adı Soyadı SELECT.sno,.,. AS [Satış Adedi],. AS [Satış Fiyatı], (., *.) as Tutar,. AS [Satış Tarihi], müşteri. AS [Adı Soyadı] FROM,, müşteri WHERE.sno =.sno AND müşteri.mno=.mno 8
İlişkisel sorgular sno Satış adedi Satış ı Tutar Satış Tarihi Adı Soyadı SELECT.sno,.,. AS [Satış Adedi],. AS [Satış Fiyatı], (., *.) as Tutar,. AS [Satış Tarihi], müşteri. AS [Adı Soyadı] FROM,, müşteri WHERE.sno =.sno AND müşteri.mno=.mno AND. between 2011-04-01 AND 2011-04-31 ORDER BY. DESC 9
İlişkisel sorgular sno Satış adedi Satış ı Tutar Satış Tarihi SELECT.sno,.,. AS [Satış Adedi],. AS [Satış Fiyatı], (., *.) as Tutar,. AS [Satış Tarihi] FROM,, müşteri WHERE.sno =.sno AND müşteri.mno=.mno AND. between 2011-04-01 AND 2011-04-31 AND müşteri.mno=5 10
Takma AD (Alias) sno Satış adedi Satış ı Tutar Satış Tarihi SELECT s.sno, s., st. AS [Satış Adedi], st. AS [Satış Fiyatı], (st., * st.) as Tutar, st. AS [Satış Tarihi] FROM s, st, müşteri m WHERE s.sno = st.sno AND m.mno=st.mno AND st. between 2011-04-01 AND 2011-04-31 AND m.mno=5 11
INNER JOIN Tablo1 Kolon1 Kolon2 Kolon3 Tablo2 Kolon1 Kolon2 Kolon3 Tablo3 Kolon1 Kolon2 Kolon3 SELECT tablo1.kolon1, tablo1.kolon2, tablo2.kolon1, tablo2.kolon2, tablo3.kolon1, tablo3.kolon2,., tablo1.kolonn,., tablo2.kolonn,., tablo3.kolonn, FROM tablo1 INNER JOIN tablo2 ON tablo1.kolon1 = tablo2.kolon1 INNER JOIN tablo3 ON tablo2.kolon2 = tablo3.kolon1 12
En pahalı malı alan müşteri bilgileri doğum_i mno Doğum_i 101 Ali Can Burdur 01.01.1982 102 Mehmet Koç Muğla 06.11.1990 SELECT m.* FROM s INNER JOIN st ON s.sno=st.sno INNER JOIN müşteri m ON m.mno=st.mno WHERE s.sno in ( select sno from WHERE >= ( select max() from ) ) 13
Belirli ler arasında günlük ların ini ve tutarını listele doğum_i Satış i Toplam Satış SELECT st. AS [Satış Tarihi], sum(st. + st. ) as [Toplam Satış] FROM st WHERE st.>= 2011-04-01 AND s.<= 2011-04-30 GROUP BY st. SELECT st. AS [Satış Tarihi], sum(st. + st. ) as [Toplam Satış] FROM st GROUP BY st. HAVING st. >= 2011-04-01 AND s. <= 2011-04-30 14
En çok alışveriş yapan müşteri bilgileri doğum_i mno Doğum_i 101 Ali Can Burdur 01.01.1982 SELECT m.* FROM st INNER JOIN müşteri m ON m.mno=st.mno WHERE st.mno in ( select Top 1 mno from gruop by mno having sum(*) >= ) (select max(*) from ) 15
Soru ve Önerileriniz? 16