-
Notifications
You must be signed in to change notification settings - Fork 0
/
i06_groupBy.sql
124 lines (108 loc) · 5.52 KB
/
i06_groupBy.sql
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
use sys;
/*============================= 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 manav
(
isim varchar(50),
urun_adi varchar(50),
urun_miktari int
);
INSERT INTO manav VALUES( 'Ali', 'Elma', 5);
INSERT INTO manav VALUES( 'Ayse', 'Armut', 3);
INSERT INTO manav VALUES( 'Veli', 'Elma', 2);
INSERT INTO manav VALUES( 'Hasan', 'Uzum', 4);
INSERT INTO manav VALUES( 'Ali', 'Armut', 2);
INSERT INTO manav VALUES( 'Ayse', 'Elma', 3);
INSERT INTO manav VALUES( 'Veli', 'Uzum', 4);
INSERT INTO manav VALUES( 'Ali', 'Armut', 2);
INSERT INTO manav VALUES( 'Veli', 'Elma', 3);
INSERT INTO manav VALUES( 'Ayse', 'Uzum', 4);
INSERT INTO manav VALUES( 'Ali', null, 2);
select * from manav;
/* -----------------------------------------------------------------------------
ORNEK1: kisi ismine göre satılan toplam meyve miktarlarını gösteren sorguyu
yazınız.
------------------------------------------------------------------------------*/
select isim,sum(urun_miktari)toplam_urun from manav
group by isim;
/* ----------------------------------------------------------------------------
ORNEK2: satılan meyve türüne (urun_adi) göre urun alan kişi sayısını gösteren
sorguyu yazınız. NULL olarak girilen meyveyi listelemesin.
-----------------------------------------------------------------------------*/
-- GROUP by ile birlikte WHERE cümleciği kullanılabilir.
select urun_adi,count(isim)kisi_sayisi
from manav
where urun_adi is not null
group by urun_adi;
/* ----------------------------------------------------------------------------
ORNEK3: satılan meyve türüne (urun_adi) göre satılan (urun_miktari )MIN ve
MAX urun miktarlarini, MAX urun miktarina göre sıralayarak listeyen sorguyu
yazınız.
-----------------------------------------------------------------------------*/
select urun_adi,min(urun_miktari)min,max(urun_miktari)max
from manav
where urun_adi is not null
group by urun_adi
order by max;
/* ----------------------------------------------------------------------------
ORNEK4: kisi ismine ve urun adına göre satılan ürünlerin toplamını
gruplandıran ve isime göre ters sırasıda listeyen sorguyu yazınız.
-----------------------------------------------------------------------------*/
select isim,urun_adi,sum(urun_miktari)toplam_miktar
from manav
group by isim,urun_adi
order by isim desc;
/* ----------------------------------------------------------------------------
ORNEK5: kisi ismine ve urun adına göre (gruplayarak) satılan ürünlerin toplamını bulan ve
ve bu toplam değeri 3 ve fazlası olan kayıtları toplam urun miktarlarina göre
ters siralayarak listeyen sorguyu yazınız.
-----------------------------------------------------------------------------*/
select isim,urun_adi,sum(urun_miktari)
from manav
group by isim,urun_adi
having sum(urun_miktari)>=3
order by sum(urun_miktari) desc;
-- aggregate fonksiyonlari ile ilgili bir koşul koymak için
-- group by dan sonra having cümleciği kullanilir.
/* ----------------------------------------------------------------------------
ORNEK6: satılan urun_adi'na göre (gruplayarak) MAX urun sayılarını sıralayarak listeleyen
sorguyu yazınız. NOT: Sorgu, sadece MAKS urun_miktari MIN urun_miktarına
eşit olmayan kayıtları listelemelidir.
-----------------------------------------------------------------------------*/
select urun_adi,max(urun_miktari)maks
from manav
group by urun_adi
having max(urun_miktari)!=min(urun_miktari)
order by max(urun_miktari);
-- sralama group by
-- having
-- order by
/*============================= DISTINCT =====================================
DISTINCT cümleciği bir SORGU ifadesinde benzer olan satırları filtrelemek
için kullanılır. Dolayısıyla seçilen sutun yada sutunlar için benzersiz veri
içeren satırlar oluşturmaya yarar.
SYNTAX
-------
SELECT DISTINCT sutun_adi1, sutun_adi2, sutun_adi3
FROM tablo_adı;
==============================================================================*/
/* ----------------------------------------------------------------------------
ORNEK1: satılan farklı meyve türlerinin sayısını listeleyen sorguyu yazınız.
-----------------------------------------------------------------------------*/
select count(distinct urun_adi) from manav;
/* -----------------------------------------------------------------------------
ORNEK2: satılan meyve + isimlerin farklı olanlarını listeyen sorguyu yazınız.
------------------------------------------------------------------------------*/
select distinct urun_adi,isim
from manav;
/* ----------------------------------------------------------------------------
ORNEK3: satılan meyvelerin urun_miktarlarinin benzersiz olanlarının
toplamlarini listeyen sorguyu yazınız.
-----------------------------------------------------------------------------*/
select sum(distinct urun_miktari)urun_sayisi
from manav;