λ€μ΄κ°κΈ°
μμ μ μ΄μμκ° μλ€λ©΄ ,
μ΄μμλ λμ νλ§€ μ΄μ‘, μΌλ³ νλ§€λ λ± λμ νλ§€μ λμμ΄ λλ μ§κ³λ μ λ³΄κ° νμνλ€.
μ§κ³νκΈ° μν΄μλ GROUP BY λ¬Έμ μ¬μ©νκ³ κ΅¬μ²΄μ μΈ μ§κ³ λ΄μ©μ μ§κ³ ν¨μλ₯Ό μ¬μ©νλ€.
π€ΈβοΈ μ§κ³λ ν΅κ³μ λΉμ·ν μλ―Έλ‘, λ°μ΄ν°λ² μ΄μ€μμλ ν΅κ³λ³΄λ€ μ§κ³λΌλ μ©μ΄λ₯Ό μ¬μ©νλ€.
νμ΅λͺ©ν
μ§κ³ν¨μμ GROUP BY κ²μμ λν΄ μμ보μ
π μ§κ³ν¨μ
μ¬λ¬ ν λλ ν μ΄λΈ μ 체 νμΌλ‘λΆν° νλμ κ²°κ³Όκ°μ λ°ννλ ν¨μμ΄λ€.
μμ μ΄μμλ μ 체 λμμ νλ§€μ‘ ν©κ²λ₯Ό μκ³ μΆμ΄ νλ€. μ΄λ₯Ό μν΄μ μ§κ³ ν¨μλ₯Ό μ΄μ©ν μ μλ€.
μ§κ³ ν¨μλ ν μ΄λΈμ κ° μ΄μ λν΄ κ³μ°μ νλ ν¨μλ‘ SUM, AVG, MIN, MAX, COUNTμ 5κ°μ§κ° μλ€.
* μ§κ³ν¨μμ μ’ λ₯
- COUNT() : κ²μλ νμ μλ₯Ό λ°ννλ€.
- SUM() : κ²μ λ νμ λͺ¨λ ν©μ λ°ννλ€.
- MAX() : κ²μλ νμ€μμ μ΅λ κ°μ λ°ννλ€.
- MIN() : κ²μ λ νμ€μμ μ΅μ κ°μ λ°ννλ€.
- AVG() : κ²μ λ νμ€μμ νκ· κ°μ λ°ννλ€.
- μμ -
--01_COUNT()
--컬λΌμ κ°μ λͺ¨μμ νλλ‘ λ§λλ ν¨μ. μ‘°ν κ²°κ³Όκ° 1νμ΄ λμΆ
--λ μ½λμ μλ₯Ό μ
λ : count (컬λΌλͺ
) -nullμΈ μ»¬λΌμ μ§κ³ ν¬ν¨νμ§ μλλ€.
--μμ
select * from EMP;
select count(empno),count(ename),count(hiredate),count(mgr),count(comm)
from emp;
--μ€μ΅
--μ¬μν
μ΄λΈμμ λ§€λμ κ° μλ μ¬μ μλ₯Ό μ‘°ν
select count(empno)-count(mgr),
'μ 체'||count(*)||'λͺ
μ€ λ³΄λμ€λ₯Ό μλ Ήνμ§ μλ μΈμμ'||(count(ename)-count(comm))||'λͺ
μ
λλ€.'msg
from emp;
--02
--sum(컬λΌλͺ
)-컬λΌμ κ° ν©κ³,
--max(컬λΌλͺ
)-μ»¬λΌ κ° μ€ μ΅κ³ κ°
--min(컬λΌλͺ
)-컬λΌμ κ° μ€ μ΅μκ°
--avg(컬λΌλͺ
)-μ»¬λΌ κ°μ νκ·
--02.1
--μ¬μν
μ΄λΈμμ μ°λ΄μ ν© μ‘°ν©
select sum(sal)
from emp;
--02.2
--μ¬μν
μ΄λΈμμ μ°λ΄μ ν©,μ΅κ³ ,μ΅μ ,νκ· μ°λ΄ μ‘°ν
select sum(sal),max(sal),min(sal),avg(sal),trunc(avg(sal))
from emp;
--02.3
--μ§κ³ν¨μλ whereμ μ μ¬μ©ν μ μλ€.
--μ¬μν
μ΄λΈμμ νκ· μ°λ΄ μ΄μμΈ μ¬μμ μ¬μλ²νΈ,μ¬μλͺ
,μ°λ΄μ μ‘°ν
select empno,ename,sal
from emp
where sal>=(select avg(sal)from emp);
--02.4
--μ¬λ¬ νμ΄ μ‘°νλλ 컬λΌκ³Ό ν¨κ» μ¬μ©λλ©΄ error
--sal -> 12κ°μ νμ΄ μ‘°ν, avg(sal)-1ν μ‘°ν => μ‘°νλλ κ²°κ³Όνμ΄ λ§μ§ μμμ error
select sal, avg(sal)
from emp;
π GROUP BY μ
- νΉμ λ²μλ³ μ§κ³ λ°μ΄ν°λ₯Ό μ»κΈ° μν΄μλ λ°λ‘ 'νΉμ λ²μ'λ₯Ό μ§μ ν΄ μ£Όμ΄μΌ νλ€. μ΄λ₯Ό "κ·Έλ£Ήμ μ§λλ€" λΌλ μλ―Έλ‘
κ·Έλ£Ήν μ΄λΌκ³ νλ€.
μ΄λ¬ν νΉμ λ²μλ GROUP BY μ μ μ¬μ©ν΄μ μ§μ νλ€.
μ¦, GROUP BYμ μ νΉμ 컬λΌμ κΈ°μ€μΌλ‘ μ§κ³λ₯Ό λ΄λλ° μ¬μ©λλ€.
--λ¬Έλ²)
--01
--μ 체 λ μ½λμ μ§κ³ ( 1νλ§ λμ¨λ€ )
select μ§κ³ν¨μ( 컬λΌλͺ
)
from ν
μ΄λΈλͺ
;
--02
--κ·Έλ£Ήλ³ λ μ½λμ μ§κ³ ( κ·Έλ£Ήμ νλ§νΌ μ‘°ν )
select μ§κ³ν¨μ( 컬λΌλͺ
)
from ν
μ΄λΈλͺ
group by 컬λΌλͺ
;
- μμ -
-- μ§κ³ν¨μλ group byμ ν¨κ» μ¬μ©λλ©΄ κ·Έλ£Ήλ³ μ§κ³λ₯Ό μ»μ μ μλ€.
-- μ¬μν
μ΄λΈμμ λΆμλ³ μΈμμ,λΆμλ³ μ°λ΄ν©,λΆμλ³ μ΅κ³ μ°λ΄λ₯Ό μ‘°ν
select deptno,count(*), sum( sal ), max( sal)
from emp
group by deptno
order by deptno;
- μ€μ΅ -
-- μ¬μν
μ΄λΈμμ λ§€λμ λ³ κ΄λ¦¬μ¬μμ, μ°λ΄ν©, μ΅κ³ μ°λ΄,μ΅μ μ°λ΄, νκ· μ°λ΄
-- μ‘°ν
-- λ¨,κ΄λ¦¬μ¬μμκ° 2λͺ
μ΄μ μ΄λ©΄μ , λ§€λμ κ° μλ μ¬μλ§ μ‘°ν <- where μ
select mgr, count( empno ), sum( sal ) , max(sal ),
min(sal) ,trunc(avg( sal))
from emp
where mgr is not null
group by mgr
having count(empno) >= 2 ;
π ROLLUP / CUBE
- κ·Έλ£Ήλ³ μ§κ³μ μ΄ν©μ μ‘°νν λ -
--λ¬Έλ²)
group by rollup( 컬λΌλͺ
)
1. ROLLUP
group by rollup( 컬λΌλͺ ) => κ·Έλ£Ήλ³ ν©μ 보μ¬μ£Όκ³ μ΄ν©μ λ§μ§λ§μ 보μ¬μ€λ€.
2. CUBE
group by cube( 컬λΌλͺ ) => μ΄ν©μ λ¨Όμ 보μ¬μ£Όκ³ κ·Έλ£Ήλ³ ν©μ 보μ¬μ€λ€.
-- κ·Έλ£Ήλ³ ν©μ μ‘°ν
-- μ¬μν
μ΄λΈμμ λΆμλ³ μ°λ΄ν©κ³Ό μ΄ν©μ μ‘°ν
----컬λΌνλκ° κ·Έλ£ΉμΌλ‘ λ¬ΆμΈ κ²½μ°-------------------------------------------------------------
--01
-- rollup : κ·Έλ£Ήλ³ ν©μ λ¨Όμ 보μ¬μ£Όκ³ , μ΄ν©μ λμ€μ 보μ¬μ€λ€.
select deptno, sum( sal )
from emp
group by rollup(deptno);
--02
--cube : μ΄ν©μ λ¨Όμ 보μ¬μ£Όκ³ , κ·Έλ£Ήλ³ν©μ λμ€μ 보μ¬μ€λ€.
select deptno, sum( sal )
from emp
group by cube(deptno);
- μ»¬λΌ μ¬λ¬κ°κ° κ·Έλ£ΉμΌλ‘ λ¬ΆμΈ κ²½μ° -
----컬λΌμ¬λ¬κ°κ° κ·Έλ£ΉμΌλ‘ λ¬ΆμΈ κ²½μ°-------------------------------------------------------------
-- μ¬μ ν
μ΄λΈμμ λΆμλ³ μ§λ¬΄μ μ°λ΄ν© μ‘°ν
--01
-- λΆμλ³ν©, μκ³, μ΄κ³λ₯Ό μ»μ λ : rollup
select deptno,job,sum(sal)
from emp
group by rollup(deptno,job)
order by deptno;
--02
-- μ΄κ³, κ·Έλ£Ήλ³ν©, μκ³,λΆμλ³ ν©μ μ»μ λ : cube
select deptno,job,sum(sal)
from emp
group by cube(deptno,job)
order by deptno;
01. http://www.kyobobook.co.kr/< λμ > λ°μ΄ν°λ² μ΄μ€ κ°λ‘ κ³Ό μ€μ΅
λ°μ΄ν°λ² μ΄μ€ κ°λ‘ κ³Ό μ€μ΅ - κ΅λ³΄λ¬Έκ³
λ°μ΄ν°λ² μ΄μ€ ν΅μ¬ μ΄λ‘ μ μ€λΌν΄λ‘ μ€μ΅νλ©° 곡λΆν μ μλ μ± μ λλ€. λ°μ΄ν°λ² μ΄μ€ μμ€ν μ μ΄ν΄νλ λ° νμν μ΄λ‘ μ 4κ°μ λΆλ‘ λλμ΄ μ€μ΅κ³Ό ν¨κ» μ΅ν λ€μ, λ§μ§λ§μλ μν¬λΆμΌλ‘
www.kyobobook.co.kr
02. https://lee1535.tistory.com/μ€λΌν΄ μ§κ³ν¨μ μ€λͺ
[μ€λΌν΄/Oracle] μ§κ³ν¨μ SUM(), MAX(), MIN(), AVG(), COUNT() μ¬μ© λ°©λ²
μ΄λ² ν¬μ€ν μμλ μ§κ³ ν¨μμ€ κ°μ₯ λ§μ΄ μ¬μ©λλ SUM( ), MAX( ), MIN( ), AVG( ), COUNT( )μ λν΄μ ν¬μ€ν νκ² μ΅λλ€. μ§κ³ ν¨μμ κΈ°λ³Έ μ¬μ©λ², GROUP BYλ₯Ό μ¬μ©ν μ¬μ©λ² OVER ( )μ ν΅ν μ¬μ©λ²μ μκ°
lee1535.tistory.com
03. https://m.blog.naver.com/μ€λΌν΄ GRUOUP BY μ μ€λͺ
[Oracle]κ·Έλ£Ή 쿼리 - μ§κ³ν¨μ, Group by
#μ€λΌν΄ #GROUPBY #SUM #COUNT #AVG #MAX #MIN 1. DISTINCT μ ALL --...
blog.naver.com
[Oracle] group by, having μ¬μ© λ°©λ²
μλ νμΈμ μ΄λ² ν¬μ€ν μμλ μλ μμ λ₯Ό ν΅ν΄ group byμ having μ μ¬μ© λ°©λ²μ λν΄ μμλ³΄κ² μ΅λλ€. 0. GROUP BY, HAVING μ€λͺ SELECT GROUP BYμμ μ§μ λ 컬λΌ, GROUP BY λ³λ‘ μ§κ³ν κ° FROM ν μ΄λΈ WHER..
ajdahrdl.tistory.com
[Oracle] GROUP BY μ , HAVING μ
μ€λΌν΄ GROUP BY, HAVING μ GROUP BYμ μ¬μ©λ² GROUPλ νΉμ 컬λΌμ κΈ°μ€μΌλ‘ μ§κ³λ₯Ό λ΄λλ° μ¬μ©λλ€. μΌλ¨ μλ₯Ό λ€μ΄ 보λλ‘ νκ² μ΅λλ€. μλμ κ°μ΄ νκΈ μ 체μ μ±μ μ λνλ΄λ ν μ΄λΈμ΄ μμ΅λλ€
jink1982.tistory.com