-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path09_SubQueries.sql
More file actions
134 lines (109 loc) · 3.42 KB
/
09_SubQueries.sql
File metadata and controls
134 lines (109 loc) · 3.42 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
/*============================= SUBQUERIES ====================================
A subquery is a query executed inside another query.
Syntax:
Main Query → (Subquery)
Subqueries are commonly used with:
- IN / EXISTS
- Aggregate functions
================================================================================*/
USE JavaCan;
/* ---------------- Tables ---------------- */
CREATE TABLE calisanlar
(
id INT,
isim VARCHAR(50),
sehir VARCHAR(50),
maas INT,
isyeri VARCHAR(20)
);
INSERT INTO calisanlar VALUES(123456789, 'Haluk Bilgin', 'Istanbul', 50000, 'IBM');
INSERT INTO calisanlar VALUES(234567890, 'Ipek Bilir', 'Istanbul', 25000, 'Google');
INSERT INTO calisanlar VALUES(345678901, 'Harun Bilmiş', 'Ankara', 13000, 'IBM');
INSERT INTO calisanlar VALUES(456789012, 'Harun Bilmiş', 'Izmir', 10000, 'Microsoft');
INSERT INTO calisanlar VALUES(567890123, 'Harun Bilmiş', 'Ankara', 17000, 'Amazon');
INSERT INTO calisanlar VALUES(456789012, 'Ipek Bilir', 'Ankara', 15000, 'Microsoft');
INSERT INTO calisanlar VALUES(123456710, 'Halime Bak', 'Bursa', 25000, 'IBM');
/* ---------------- Markalar Table ---------------- */
CREATE TABLE markalar
(
marka_id INT,
marka_isim VARCHAR(20),
calisan_sayisi INT
);
INSERT INTO markalar VALUES(100, 'IBM', 12000);
INSERT INTO markalar VALUES(101, 'Microsoft', 18000);
INSERT INTO markalar VALUES(102, 'Amazon', 10000);
INSERT INTO markalar VALUES(103, 'Google', 21000);
SELECT * FROM calisanlar;
SELECT * FROM markalar;
/* ================= TASKS ================= */
/* Task01:
List names, workplace, and salary of employees working in brands
that have more than 15000 employees.
*/
SELECT isim, isyeri, maas
FROM calisanlar
WHERE isyeri IN (
SELECT marka_isim
FROM markalar
WHERE calisan_sayisi > 15000
);
/* Task02:
List name, salary, and city of employees working in brands
whose marka_id is greater than 101.
*/
SELECT isim, maas, sehir
FROM calisanlar
WHERE isyeri IN (
SELECT marka_isim
FROM markalar
WHERE marka_id > 101
);
/* Task03:
List marka_id and employee count of brands that have employees working in Ankara.
*/
SELECT marka_id, calisan_sayisi
FROM markalar
WHERE marka_isim IN (
SELECT isyeri
FROM calisanlar
WHERE sehir = 'Ankara'
);
/* ================= AGGREGATE FUNCTIONS IN SUBQUERIES ===========================
Aggregate functions (SUM, COUNT, MIN, MAX, AVG) can be used in subqueries.
Important rule:
The subquery must return a single value when used in SELECT list.
==============================================================================*/
/* Task04:
List each brand name, employee count, and total salary of employees working in that brand.
*/
SELECT
marka_isim,
calisan_sayisi,
(SELECT SUM(maas)
FROM calisanlar
WHERE marka_isim = isyeri) AS toplam_maas
FROM markalar;
/* Task05:
List each brand name, employee count, and average salary of employees working in that brand.
*/
SELECT
marka_isim,
calisan_sayisi,
(SELECT AVG(maas)
FROM calisanlar
WHERE marka_isim = isyeri) AS ortalama_maas
FROM markalar;
/* Task06:
List each brand name, employee count, and minimum & maximum salary of employees working in that brand.
*/
SELECT
marka_isim,
calisan_sayisi,
(SELECT MIN(maas)
FROM calisanlar
WHERE marka_isim = isyeri) AS min_maas,
(SELECT MAX(maas)
FROM calisanlar
WHERE marka_isim = isyeri) AS max_maas
FROM markalar;