DİKKAT: Ders aralarında gelen bu genel tekrar sorgularını lütfen kendiniz yapmaya çalışın ve her sorgu için kendinize en fazla 5 dk süre tanıyın, dersin sonunda cevapları vardır.
1) sigorta sicil numarası 5 in katı ve emekli olan hastaların sigorta turlerini ssk olarak guncelleyen sorgu
2) sıfır negatif kangrubuna sahip olan yasi, toplam yasin karekökünden küçük olan hastaların kilo ortalamasını getiren sorgu
3) Hastaların vücut kitle indexini hesaplayıp 20 nin altında olan kac hasta var(kilo/boy^2)
Not:Vücut kitle endeksi, vücut ağırlığınızın boy uzunluğunuzun karesine bölünmesi ile elde edilir.
0 - 18,4: Zayıf
18,5 - 24,9: Normal
25,0 - 29,9: Fazla Kilolu
30,0 - 34,9: Şişman (Obez) - I. Sınıf
35,0 - üstü: Şişman (Obez) - II. Sınıf
4) 1.Sınıf obez olan hastaları getiren sql
5) Ucretlerin karesi ile karekökünün farkının mutlak değer sonucunu getiren sql
6) Hastane adında Kadın ifadesı gecen hastanelerden kac farklı tur var
7) puanı 5 ten fazla olan doktorların , puan ortalaması nedir?
8) Bayan olan ve 30 yasından buyuk olmayan hastaların kilo ortlamasını getiren sql
9) doktor puan tablosunda puanı, 2 nin katı olan puanların ortalamasının alltında olan puanların toplamının karekökünü getiren sql komutu
10) Doktor puanlamasında puanı 5 ile 10 arasında olan puanlarin ortamalasının altında kalan kaç tane kayıt bulunmakta
ORDER BY
Order by komutu da sıralama yapılmak istenildiğinde kullanılır. Artan(asc) ve azalan(desc) parametleri ile kullanılabilir. Parametre almaz ise default artan şeklinde sıralama yapar.
SQL: Vücut kitle indexine göre hastaları obezden zayıf olana doğru sıralayın (kilo/boy^2)
--- select round( kilo/power(boy,2),2) as vki, kilo, boy, kangrubu from tbl_hastaprofil
order by vki desc ( :) iyi sorgu)
--- select round( kilo/power(boy,2),2) as vki, kilo, boy, kangrubu from tbl_hastaprofil
order by round( kilo/power(boy,2),2) desc ( :( kötü sorgu)
Selectten sonra hesaplanan alanı order by da tekrar hesaplamak performans kaybı demek, selette isim verip çağırmak daha iyi persformans saglar. Oracle selectten sonra * ın yanına başka bir alan yazılamaz, uretilmiş bir alan varsa diğer alanlar tek tek yazılmalı
GROUP BY
GROUP BY ifadesi gruplama yapar. Yani sonuç kümesini bir veya birden fazla kolona göre gruplar.
--- select kangrubu, min(yasi) as yas from tbl_hastaprofil
where yasi<(select avg(yasi) from tbl_hastaprofil)
group by kangrubu
order by yas desc
--- select yasi,avg(kilo) as ort,count(*) from tbl_hastaprofil
where cinsiyet='K'
group by yasi
having avg(kilo)>40
order by ort
SQL: Her kan grubunda , 18 yasından buyuk kac hasta var
---select kangrubu, count(*) from tbl_hastaprofil
where yasi>18
group by kangrubu
SQL: Her kan grubunda , 18 yasından buyuk hastaların vki ortalamasını getiren sql
--- select kangrubu, round( avg(kilo/power(boy,2)),2) from tbl_hastaprofil
where yasi>18
group by kangrubu
SQL: Hastaneler türe göre gruplandığında her türde kac adet hastane var
--- select tur , count(*)from tbl_hastane group by tur
SQL: doktorlar puana göre gruplandığında kaç tane doktora aynı puan verilmiştir. En düşük puana göre sıralayınız
--- select puan, count(*) from tbl_doktor_puan group by puan order by puan
GENEL TEKRAR ÇÖZÜMLERİ
1) select puan, count(*) from tbl_doktor_puan group by puan order by puan
2) select round(avg(kilo),2) from tbl_hastaprofil where kangrubu='0 rh(-)' and yasi<(select sqrt(sum(yasi)) from tbl_hastaprofil)
3) select count(*) from tbl_hastaprofil where kilo/power(boy,2)<20
4) select * from tbl_hastaprofil where kilo/power(boy,2) between 30 and 34.9
5) select abs( power(ucret,2)-sqrt(ucret)) from tbl_ucret
6) select count(distinct tur) from tbl_hastane where hastane_adi like '%Kadın%'
7) select avg(puan) from tbl_doktor_puan where puan>5
8) select avg(kilo) from tbl_hastaprofil where cinsiyet='K' and yasi<=30
9) select sqrt(sum(puan)) from tbl_doktor_puan where puan<(select avg(puan) from tbl_doktor_puan where mod(puan,2)=0)
10) select count(*) from tbl_doktor_puan
where puan<(select avg(puan) from tbl_doktor_puan where puan between 5 and 10)
Hiç yorum yok:
Yorum Gönder