-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDay_06.sql
More file actions
221 lines (104 loc) · 5.89 KB
/
Day_06.sql
File metadata and controls
221 lines (104 loc) · 5.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
/*============================= GROUP BY =====================================
GROUP BY cümleciği bir SELECT ifadesinde satırları, sutunların değerlerine
göre özet olarak GRUPLAMAK için kullanılır.
GROUP BY cümleceği her grup başına bir satır döndürür.
GROUP BY genelde, AVG(),COUNT(),MAX(),MIN() ve SUM() gibi aggregate
fonksiyonları ile birlikte kullanılır.
==============================================================================*/
create table insan(
id int primary key,
isim varchar(20),
soyisim varchar(20),
yas int,
cinsiyet char,
sehir varchar(20),
ulke varchar(20),
maas int
);
insert into insan values(200, 'Oguz', 'Kagan', '46', 'E', 'Berlin', 'Almanya', '32000');
insert into insan values(201, 'Burak', 'Ak', '30', 'E', 'Paris', 'Fransa', '50000');
insert into insan values(202, 'Funda', 'Nar', '30', 'K', 'Berlin', 'Almanya', '42000');
insert into insan values(203, 'Muhammet', 'Bir', '40', 'E', 'Paris', 'Fransa', '36000');
insert into insan values(204, 'Hasan', 'Ozay', '30', 'E', 'Izmir', 'Turkiye', '18000');
insert into insan values(205, 'Fatma', 'Yilmaz', '40', 'K', 'Istanbul', 'Turkiye', '20000');
insert into insan values(206, 'Resul', 'Demir', '35', 'E', 'Ankara', 'Turkiye', '21000');
insert into insan values(207, 'Elif', 'Can', '38', 'K', 'Isparta', 'Turkiye', '19000');
insert into insan values(208, 'Sinan', 'Burc', '32', 'E', 'Londra', 'Ingiltere', '60000');
insert into insan values(209, 'Hamza', 'Kul', '29', 'E', 'Londra', 'Ingiltere', '63000');
insert into insan values(210, 'Aylin', 'Van', '51', 'K', 'Roma', 'Italya', '38000');
-- SORU01: ulke'lere göre ortalama yas'ı listeleyiniz
select ulke, round(avg(yas)) as ortalama_yas from insan group by ulke;
-- SORU02: ulke'lere göre kaç çalışan olduğunu listeleyiniz.
select ulke, count(isim) as calisan_sayisi from insan group by ulke;
--2.yol
select ulke, count(*) as calisan_sayisi from insan group by ulke;
-- SORU03: cinsiyet'e göre maas ortalamasını listeleyiniz
select cinsiyet, round(avg(maas)) as maas_ortalamasi from insan group by cinsiyet;
-- SORU04: insan tablosunu, ulke'lere göre ve sehir'lere göre gruplayarak listeleyiniz
select ulke, sehir from insan group by ulke, sehir;
-- SORU05: ulke'lere göre ve sehir'lere göre çalışan sayısını listeleyiniz.
select ulke, sehir, count(*) as calisan_sayisi from insan group by ulke, sehir;
-- SORU06: ulke'lere göre ve cinsiyet'e göre çalışan sayısını ve yas ortalamasını listeleyiniz.
select ulke, cinsiyet, count(id) as calisan_sayisi, round(avg(yas)) as yas_ortalamasi
from insan
group by ulke, cinsiyet order by avg(yas);
-- SORU07: maas'ı 30000 den büyük olanların,
-- ulke'lere göre ve cinsiyet'e göre çalışan sayısını, yas ortalamasını listeleyiniz.``
select ulke, cinsiyet, count(id) as casisan_sayisi, round(avg(yas)) as yas_ortalamasi
from insan where maas>30000
group by ulke, cinsiyet order by avg(yas);
/*
HAVING:
ŞART belirtmek icin kullanılır.
Group By komutundan sonra yer alır.
Where komutundan farkı: Gruplama yaptıktan sonra, cıkan sonucda sart kosulacaksa Having komutu kullanılır.
*/
--SORU08: ulke'lere göre yas ortalamasını bulup, yas ortalaması 33'den buyuk olanları listeleyiniz.
select ulke,round(avg(yas)) as yas_ort from insan group by ulke having avg (yas)>33;
--SORU9: ulke'lere göre ortalama maası bulup, ortalama maas 30000'den buyuk olanları listeleyiniz
select ulke, round(avg(maas)) as ortalama_maas from insan group by ulke having avg(maas)>30000;
/*========================UNION, UNION ALL============================================
UNION: İKİ VEYA DAHA FAZLA SORGU İFADESİNİN SONUC KUMELERİNİ BİRLEŞTİREREK
TEK BİR SONUC KUMESİ OLUSTURUR.
Syntax:
----------
SELECT sutun_adi FROM tablo_adi
UNION
SELECT sutun_adi FROM tablo_adi;
UNION: SADECE BENZERSİZ VERİLERİ ALIR
UNION ALL: BENZERLİ VERİLERİ DE ALIR
NOT: Birlesik olan Sorgu ifadesinin data türü diger sorgulardaki
ifadelerin data türü ile uyumlu olmalidir.
======================================================================================*/
CREATE TABLE personel
(
id int PRIMARY KEY,
isim VARCHAR(50),
sehir VARCHAR(50),
maas int,
sirket VARCHAR(20)
);
INSERT INTO personel VALUES(123456789, 'Ali Yilmaz', 'Istanbul', 5500, 'Honda');
INSERT INTO personel VALUES(234567890, 'Veli Sahin', 'Istanbul', 4500, 'Toyota');
INSERT INTO personel VALUES(345678901, 'Mehmet Ozturk', 'Ankara', 3500, 'Honda');
INSERT INTO personel VALUES(345678902, 'Mehmet Ozturk', 'Istanbul', 3500, 'Honda');
INSERT INTO personel VALUES(456789012, 'Mehmet Ozturk', 'Izmir', 6000, 'Ford');
INSERT INTO personel VALUES(567890123, 'Mehmet Ozturk', 'Ankara', 7000, 'Tofas');
INSERT INTO personel VALUES(453445611, 'Veli Sahin', 'Ankara', 4500, 'Ford');
INSERT INTO personel VALUES(123456710, 'Hatice Sahin','Bursa', 4200, 'Honda');
/* -----------------------------------------------------------------------------
SORU1: maas'i 4000’den cok olan personel isim'lerini ve
--maas'i 5000’den cok olan sehir'leri gosteren tekrarsız sorguyu yaziniz
------------------------------------------------------------------------------*/
select maas,isim as isim_sehir from personel where maas>4000
UNION
select maas, sehir from personel where maas>5000;
/* -----------------------------------------------------------------------------
SORU2: isim'i 'Mehmet Ozturk' olan kisilerin aldigi maas'lari ve
--sehir'i 'Istabul' olan personelin maas'larini tekrarsız
--büyükten küçüge dogru siralayarak bir tabloda gosteren sorguyu yaziniz.
------------------------------------------------------------------------------*/
select isim, maas from personel where isim='Mehmet Ozturk'
union
select sehir, maas from personel where sehir='Istanbul'
order by maas desc;