728x90
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
|
--GROUP BY ํ์ฉ
--๋ฌธ์ 1) EMPLOYEES ํ
์ด๋ธ์์ ๋ชจ๋ SALESMAN(SA_MAN)์ ๋ํ์ฌ ๊ธ์ฌ์
--ํ๊ท , ์ต๊ณ ์ก, ์ต์ ์ก, ํฉ๊ณ๋ฅผ ๊ตฌํ์ฌ ์ถ๋ ฅํ์ฌ๋ผ.
SELECT avg(salary), max(salary), min(salary), sum(salary)
FROM employees
WHERE job_id = 'SA_MAN';
--๋ฌธ์ 2) EMPLOYEES ํ
์ด๋ธ์ ๋ฑ๋ก๋์ด ์๋ ์ธ์์, ๋ณด๋์ค๊ฐ NULL์ด ์๋
--์ธ์์, ๋ณด๋์ค์ ํ๊ท , ๋ฑ๋ก๋์ด ์๋ ๋ถ์์ ์๋ฅผ ๊ตฌํ์ฌ ์ถ๋ ฅํ๋ผ.
SELECT count(*),count(commission_pct), avg(commission_pct * salary) , count(DISTINCT department_id)
FROM employees
WHERE commission_pct is not null;
SELECT
*
FROM employees;
--๋ฌธ์ 3) EMPLOYEES ํ
์ด๋ธ์์ ๋ถ์๋ณ๋ก ์ธ์์, ํ๊ท ๊ธ์ฌ, ์ต์ ๊ธ์ฌ, ์ต๊ณ
--๊ธ์ฌ, ๊ธ์ฌ์ ํฉ์ ๊ตฌํ์ฌ ์ถ๋ ฅํ๋ผ.
SELECT department_id, count(department_id), trunc(avg(salary)), min(salary), max(salary), sum(salary)
FROM employees
GROUP BY department_id
ORDER BY department_id ASC;
--๋ฌธ์ 4) EMPLOYEES ํ
์ด๋ธ์์ ๊ฐ ๋ถ์๋ณ๋ก ์ธ์์,๊ธ์ฌ์ ํ๊ท , ์ต์ ๊ธ์ฌ,
--์ต๊ณ ๊ธ์ฌ, ๊ธ์ฌ์ ํฉ์ ๊ตฌํ์ฌ ๊ธ์ฌ์ ํฉ์ด ๋ง์ ์์ผ๋ก ์ถ๋ ฅํ์ฌ๋ผ.
SELECT count(department_id),avg(salary) ,min(salary), max(salary), sum(salary) AS "๊ธ์ฌ์ํฉ"
FROM employees
GROUP BY department_id
ORDER BY "๊ธ์ฌ์ํฉ" DESC;
--๋ฌธ์ 5) EMPLOYEES ํ
์ด๋ธ์์ ๋ถ์๋ณ, ์
๋ฌด๋ณ ๊ทธ๋ฃนํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ๋ถ์๋ฒํธ, ์
--๋ฌด, ์ธ์์, ๊ธ์ฌ์ ํ๊ท , ๊ธ์ฌ์ ํฉ์ ๊ตฌํ์ฌ ์ถ๋ ฅํ์ฌ๋ผ.
SELECT department_id, job_id, count(*), trunc(avg(salary)), sum(salary)
FROM employees
GROUP BY department_id, job_id;
--๋ฌธ์ 6) EMPLOYEES ํ
์ด๋ธ์์ ๋ถ์ ์ธ์์ด 4๋ช
๋ณด๋ค ๋ง์ ๋ถ์์ ๋ถ์๋ฒํธ,
--์ธ์์, ๊ธ์ฌ์ ํฉ์ ๊ตฌํ์ฌ ์ถ๋ ฅํ์ฌ๋ผ.(GROUP BY, HAVING)
SELECT department_id, count(*), sum(salary)
FROM employees
GROUP BY department_id
HAVING count(*) > 4;
--๋ฌธ์ 7) EMPLOYEES ํ
์ด๋ธ์์ ๊ธ์ฌ๊ฐ ์ต๋ 10000์ด์์ธ ๋ถ์์ ๋ํด์ ๋ถ
--์๋ฒํธ, ํ๊ท ๊ธ์ฌ, ๊ธ์ฌ์ ํฉ์ ๊ตฌํ์ฌ ์ถ๋ ฅํ์ฌ๋ผ.
SELECT department_id, trunc(avg(salary)), sum(salary)
FROM employees
GROUP BY department_id
HAVING MAX(salary) >= 10000;
--๋ฌธ์ 8) EMPLOYEES ํ
์ด๋ธ์์ ์
๋ฌด๋ณ ๊ธ์ฌ์ ํ๊ท ์ด 10000 ์ด์์ธ ์
๋ฌด์
--๋ํด์ ์
๋ฌด๋ช
,ํ๊ท ๊ธ์ฌ, ๊ธ์ฌ์ ํฉ์ ๊ตฌํ์ฌ ์ถ๋ ฅํ๋ผ.
SELECT job_id, trunc(avg(salary)), sum(salary)
FROM employees
GROUP BY job_id
HAVING AVG(salary)>=10000;
--๋ฌธ์ 9) EMPLOYEES ํ
์ด๋ธ์์ ์ ์ฒด ์๊ธ์ด 10000์ ์ด๊ณผํ๋ ๊ฐ ์
๋ฌด์ ๋
--ํด์ ์
๋ฌด์ ๊ธ์ฌ ํฉ๊ณ๋ฅผ ์ถ๋ ฅํ๋ผ. ๋จ ํ๋งค์(SA_)์ ์ ์ธํ๊ณ ์ ๊ธ์ฌ ํฉ๊ณ
--๋ก ์ ๋ ฌ(๋ด๋ฆผ์ฐจ์)ํ๋ผ
SELECT job_id, sum(salary)
FROM employees
WHERE job_id NOT LIKE 'SA_%'
GROUP BY job_id
HAVING AVG(salary)>10000
ORDER BY sum(salary) DESC;
|
cs |
'๐ฆ ๋ฐ์ดํฐ ๋ฒ ์ด์ค (DB) ๐ฆ > ๐ พ ์ค๋ผํด DB & SQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JOIN๋ฌธ (0) | 2021.02.10 |
---|---|
ORDER, GROUP BY๋ฌธ - ๋ฌธ์ 4 (Scott) (0) | 2021.02.10 |
Power, Trunc, Trim, Round๋ฑ ๊ฐ์ข ํจ์ํ์ฉ - ๋ฌธ์ 2 (0) | 2021.02.10 |
ORDER BY๋ฌธ - ๋ฌธ์ 1 (0) | 2021.02.10 |
Power, Trunc, Trim, Round๋ฑ ๊ฐ์ข ํจ์ 1# (0) | 2021.02.10 |
๋๊ธ