ben

OMÜ , Bilgisayar Mühendisliği, 13'

21 Ağustos 2019 Çarşamba

Sıralama ve Kümeleme

GENEL TEKRAR SORGULARI

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: