Published on

SQL Veri Tabani Sorgu Alıştırma Soruları

Authors
  • avatar
    Name
    Alperen Önal
    Twitter

Sorular Raghu Ramakrishnan'ın kitabından alıntılanmıştır.

(Q1) 103 numaralı tekneyi rezerve eden denizcileri bulun.

select sname from sailors inner join reserves on sailors.sid=reserves.sid where bid=103

(Q2) Kırmızı tekne rezerve eden denizcileri bulun.

select distinct sname from sailors inner join reserves on sailors.sid=reserves.sid
inner join boats on boats.bid=reserves.bid where color='red'

(Q3) Lubber tarafından rezerve edilen teknelerin renklerini bulun.

select distinct color from sailors inner join reserves on sailors.sid=reserves.sid
inner join boats on boats.bid=reserves.bid where sname='lubber'

(Q4) En az bir tekne ayırtmış denizcilerin isimlerini bulunuz.

select distinct sname from sailors inner join reserves on sailors.sid=reserves.sid

(Q5) Kırmızı veya yeşil tekne ayırtmış olan denizcilerin isimlerini bulunuz.

select distinct sname from sailors inner join reserves on sailors.sid=reserves.sid
inner join boats on boats.bid=reserves.bid where color='red' or color='green'

(Q6) Kırmızı ve yeşil tekne ayırtmış olan denizcilerin isimlerini bulunuz.

select distinct sname from sailors inner join reserves on sailors.sid=reserves.sid
inner join boats on boats.bid=reserves.bid where color='red'
intersect
select distinct sname from sailors inner join reserves on sailors.sid=reserves.sid
inner join boats on boats.bid=reserves.bid where color='green'

(Q7) En az iki tekne rezerve etmiş olan denizcilerin isimlerini bulunuz.

select distinct sname from sailors inner join reserves on sailors.sid=reserves.sid group by sname having 1<COUNT(sname)

(Q8) Yaşı 20’den büyük olan ve kırmızı tekne ayırtmamış olan denizcilerin isimlerini bulunuz.

select distinct sname from sailors inner join reserves on sailors.sid=reserves.sid
inner join boats on boats.bid=reserves.bid where color!='red' and age>20

(Q13) Her tekne rezervasyonu için denizci adı,tenke id ve tarihini bulunuz.

select sname,bid,day from sailors inner join reserves on sailors.sid=reserves.sid

(Q16) Kırmızı tekne rezerve eden denizcilerin id’sini bulunuz.

select distinct sailors.sid from sailors inner join reserves on sailors.sid=reserves.sid
inner join boats on boats.bid=reserves.bid where color='red'

Q18) Adı B ile başlayıp B ile biten denizcilerin yaşlarını bulunuz.

select age from sailors where sname like  '%b' and  sname like 'b%'

(Q19) Kırmızı tekneleri rezerve eden ama yeşil tekneleri rezerve etmeyen denizcilerin id’lerini bulunuz.

select distinct sailors.sid from sailors inner join reserves on sailors.sid=reserves.sid
inner join boats on boats.bid=reserves.bid where color='red'
except
select distinct sailors.sid from sailors inner join reserves on sailors.sid=reserves.sid
inner join boats on boats.bid=reserves.bid where color='green'

(Q20) Rayting’i 10 olan veya 104 numaralı tekneyi rezerve eden denizcileri bulunuz.

select distinct sailors.sid from sailors inner join reserves on sailors.sid=reserves.sid
inner join boats on boats.bid=reserves.bid where rating=10 OR boats.bid=104

(Q22) Rayting’i Horatio isimli denizciden yüksek olan denizcileri bulunuz.

select distinct sname from sailors inner join reserves on sailors.sid=reserves.sid
inner join boats on boats.bid=reserves.bid
where ratin>(select ratin from sailors where sname='Horatio')

(Q24) Ortalamadan yüksek rating’e sahip olan denizcileri bulunuz.

select sname from sailors where ratin>(select AVG(ratin) from sailors)

(Q25) Tüm denizcilerin ortalama yaşlarını bulunuz.

select AVG(age) from sailors

(Q27) En yaşlı denizcinin adını ve yaşını bulunuz.

select age,sname from sailors where age=(select MAX(age) from sailors)

(Q30) Rating’i 10 olan en yaşlı denizciden daha yaşlı olan denizcileri bulunuz.

select sname from sailors where age>(select max(age) from sailors where rating=10)

(Q31) Her rating seviyesi için en genç denizcinin yaşını bulunuz.

select ratin,MIN(age) from sailors group by ratin

(Q33) Her kırmızı teknenin kaç defa rezerve edildiğini bulunuz.

select boats.bid,COUNT(*) from reserves inner join boats on reserves.bid=boats.bid
where color='red' group by boats.bid

(Q34) En az 2 denizcinin bulunduğu her rating için ortalama yaşı bulunuz.

select ratin,AVG(age) from sailors  group by ratin
having COUNT(age)>=2