SQL 4. ๊ทธ๋ฃน ํจ์๋ฅผ ์ฌ์ฉํ ์ง๊ณ ๋ฐ์ดํฐ ๋ณด๊ณ
2023. 10. 12. 14:40
728x90
๐ฅ๊ทธ๋ฃน ํจ์
: ํ ์งํฉ ์ฐ์ฐ์ ์ํํ์ฌ ๊ทธ๋ฃน๋ณ๋ก ํ๋์ ๊ฒฐ๊ณผ ์ฐ์ถ
- ๋ชจ๋ ๊ทธ๋ฃนํจ์๋ NULL๊ฐ์ ๋ฌด์
- NULL๊ฐ ๋์ฒดํ๋ ค๋ฉด NVL, NVL2, COALESCE, CASE, DECODEํจ์ ์ฌ์ฉ.
- ๊ทธ๋ฃนํจ์๋ select ํค์๋ ๋ค์์ ๋ฐฐ์น๋จ.
- ์ฌ๋ฌ ๊ทธ๋ฃน ํจ์๋ฅผ ์ผํ๋ก ๊ตฌ๋ถํ์ฌ ํจ๊ป ์ฌ์ฉ๊ฐ๋ฅ.
๐ AVG, MAX, MIN, SUM
- ์ซ์ ๋ฐ์ดํฐ์ ๋ํด AVG, SUM +STDDEV, VARIANCE ํจ์ ์ฌ์ฉ๊ฐ๋ฅ
- ์ซ์, ๋ฌธ์, ๋ ์ง ๋ฐ์ดํฐ ์ ํ์ ๋ํด MIN, MAXํจ์ ์ฌ์ฉ๊ฐ๋ฅ
- STDDEV : Standard Deviation(ํ์คํธ์ฐจ)
VARIANCE : ๋ถ์ฐ
SELECT AVG(salary), MAX(salary), MIN(salary), SUM(salary)
FROM employees
WHERE job_id LIKE '%REP%';
โ COUNT
COUNT(*) | ์กฐ๊ฑด์ ์ถฉ์กฑํ๋ ํ ์ด๋ธ์ ํ ์๋ฅผ ๋ฐํ (์ค๋ณต, NULL ํฌํจ) |
COUNT(expr) | expr์ ๋ํด null์ด ์๋ ๊ฐ์ ๊ฐ์ง ํ์ ์ ๋ฐํ. |
COUNT(DISTINCT expr) | expr์ null์ด ์๋ unique ๊ฐ์ ์๋ฅผ ๋ฐํ. |
SELECT COUNT(DISTINCT department_id)
FROM employees;
๐จ๏ธ ๊ทธ๋ฃน ํจ์ ๋ฐ null๊ฐ
- ๊ทธ๋ฃน ํจ์๋ ์ด์ ์๋ ๋๊ฐ์ ๋ฌด์
- NVL ํจ์๋ ๊ฐ์ ๋ก ๊ทธ๋ฃน ํจ์์ ๋๊ฐ์ด ํฌํจ๋๋๋ก.
SELECT AVG(commission_pct)
FROM employees; //๋๊ฐ ์ ์ธ
SELECT AVG(NVL(commission_pct))
FROM employees; //๋๊ฐ๊น์ง ํฌํจ์ํด.
โ๏ธ ๋ฐ์ดํฐ ๊ทธ๋ฃน ์์ฑ: GROUP BY ์
- ํ ์ด๋ธ์ ํ์ ๋ ๊ฐ ์ด์์ ์ด๋ก ๊ทธ๋ฃนํ
- SELECT์ ์ ๊ทธ๋ฃนํจ์๋ฅผ ํฌํจํ๋ ๊ฒฝ์ฐ > GROUP BY์ ์ ์ด์ ๋ฐ๋์ ํฌํจ์์ผ์ผ ํจ.(alias ์ฌ์ฉ ๋ถ๊ฐ)
- ๊ทธ๋ฃน ํจ์์ ์๋ SELECT์ ์ ๋ชจ๋ ์ด์ GROUP BY์ ์ ์์ด์ผ ํจ.
- GROUP BY์ ์ ์ง์ ๋ ์ด์ ๊ผญ SELECT์ ์ ์ง์ ํ์ง ์์๋ ๋จ.
- ๊ทธ๋ฃนํ ์์๋ฅผ ์ง์ ํ๋ ค๋ฉด ORDER BY์ ์ ์ฌ์ฉ
- ๊ทธ๋ฃนํจ์๋ WHERE์ ์ ์ฌ์ฉํ์ฌ ๊ทธ๋ฃน ์ ํ ๋ถ๊ฐ. >> HAVING์ ์ฌ์ฉ
SELECT department_id, AVG(salary)
FROM employees
GROUP BY department_id
HAVING AVG(salary) >8000;
728x90
'Programming > SQL, Oracle' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
SQL 3. ๋จ์ผ ํ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒฐ๊ณผ๋ฌผ ๋ณ๊ฒฝ (0) | 2023.10.12 |
---|---|
SQL 2. ๋ฐ์ดํฐ ์ ํ ๋ฐ ์ ๋ ฌ (WHERE/ORDER BY) (0) | 2023.09.04 |
SQL 1. SELECT๋ฌธ์ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ ๊ฒ์ (0) | 2023.08.22 |
์ค๋ผํด ๋ฐ์ดํฐ๋ฒ ์ด์ค (0) | 2023.08.22 |
SQL*plus (2) | 2023.08.21 |