[SQL-์˜ค๋ผํด] ๊ทธ๋ฃน ํ•จ์ˆ˜

2022. 6. 17. 04:38

๊ทธ๋ฃน ํ•จ์ˆ˜

- ํ…Œ์ด๋ธ”์˜ ์ „์ฒด ํ–‰์„ ํ•˜๋‚˜ ์ด์ƒ์˜ ์นผ๋Ÿผ์„ ๊ธฐ์ค€์œผ๋กœ ๊ทธ๋ฃนํ™”ํ•˜์—ฌ ๊ทธ๋ฃน๋ณ„๋กœ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜

- ๊ทธ๋ฃนํ•จ์ˆ˜๋Š” ํ†ต๊ณ„์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๋Š”๋ฐ ์ž์ฃผ ์‚ฌ์šฉ

select ์นผ๋Ÿผ๋ช…, ๊ทธ๋ฃนํ•จ์ˆ˜(์นผ๋Ÿผ๋ช…)
from ํ…Œ์ด๋ธ”๋ช…
[where ์กฐ๊ฑด]
[group by ๊ทธ๋ฃน_์ปฌ๋ ด๋ช…|ํ‘œํ˜„์‹]
[having ๊ทธ๋ฃน_์กฐ๊ฑด]

โ–ช group by : ์ „์ฒด ํ–‰์„ ๊ทธ๋ฃน_์ปฌ๋ ด๋ช…|ํ‘œํ˜„์‹์„ ๊ธฐ์ค€์œผ๋กœ ๊ทธ๋ฃนํ™”

โ–ช having : group by์ ˆ์— ์˜ํ•ด ์ƒ์„ฑ๋œ ๊ทธ๋ฃน๋ณ„๋กœ ์กฐ๊ฑด ๋ถ€์—ฌ

 

๊ทธ๋ฃน ํ•จ์ˆ˜ ์ข…๋ฅ˜

์ข…๋ฅ˜ ์˜๋ฏธ
COUNT ํ–‰์˜ ๊ฐœ์ˆ˜ ์ถœ๋ ฅ
MAX NULL ์ œ์™ธํ•œ ๋ชจ๋“  ํ–‰์—์„œ ์ตœ๋Œ€๊ฐ’
MIN NULL ์ œ์™ธํ•œ ๋ชจ๋“  ํ–‰์—์„œ ์ตœ์†Œ๊ฐ’
SUM NULL ์ œ์™ธํ•œ ๋ชจ๋“  ํ–‰์˜ ํ•ฉ๊ณ„
AVG NULL ์ œ์™ธํ•œ ๋ชจ๋“  ํ–‰์˜ ํ‰๊ท ๊ฐ’
STDDEV NULL ์ œ์™ธํ•œ ๋ชจ๋“  ํ–‰์˜ ํ‘œ์ค€ํŽธ์ฐจ
VARIANCE NULL ์ œ์™ธํ•œ ๋ชจ๋“  ํ–‰์˜ ๋ถ„์‚ฐ๊ฐ’
GROUPING ํ•ด๋‹น ์นผ๋Ÿผ์ด ๊ทธ๋ฃน์— ์‚ฌ์šฉ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ 1 ๋˜๋Š” 0์œผ๋กœ ๋ฐ˜ํ™˜
GROUPING SETS ํ•œ ๋ฒˆ์˜ ์งˆ์˜๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ทธ๋ฃนํ™” ๊ฐ€๋Šฅ

 

COUNT  ํ–‰ ๊ฐœ์ˆ˜

- ํ…Œ์ด๋ธ”์—์„œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ํ–‰์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜

- count(*) : null ํฌํ•จ ์ „์ฒด ํ–‰ ๊ฐœ์ˆ˜

- count(์นผ๋Ÿผ๋ช…) : null ์ œ์™ธํ•œ ์ „์ฒด ํ–‰ ๊ฐœ์ˆ˜ (์ค‘๋ณต๊ฐ’ ํฌํ•จ)

count({*|[distinct all] expr})

โ–ช ' * '์€ NULL์„ ํฌํ•จํ•œ ๋ชจ๋“  ํ–‰์˜ ๊ฐœ์ˆ˜

โ–ช DISTINCT ์ค‘๋ณต๋˜๋Š” ๊ฐ’์„ ์ œ์™ธํ•œ ํ–‰์˜ ๊ฐœ์ˆ˜

โ–ช ALL ์ค‘๋ณต๋˜๋Š” ๊ฐ’์„ ํฌํ•จํ•œ ํ–‰์˜ ๊ฐœ์ˆ˜ (๊ธฐ๋ณธ๊ฐ’)

โ–ช expr ์ธ์ˆ˜์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž… : char, varchar2, number, date

 

AVG ํ‰๊ท , SUM ํ•ฉ๊ณ„

- ์ธ์ˆ˜๋กœ ์ง€์ •๋œ ์นผ๋Ÿผ์— ๋Œ€ํ•ด ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ํ–‰ ์ค‘์—์„œ NULL ์ œ์™ธํ•œ ํ‰๊ท ๊ณผ ํ•ฉ๊ณ„

- ์ˆซ์ž ๋ฐ์ดํ„ฐ ํƒ€์ž…๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

avg([distinct|all] ์ˆซ์ž๋กœ๋œ์นผ๋Ÿผ) # ํ‰๊ท 
sum([distinct|all] ์ˆซ์ž๋กœ๋œ์นผ๋Ÿผ) # ํ•ฉ๊ณ„

 

MAX ์ตœ๋Œ€, MIN ์ตœ์†Œ

- ์ธ์ˆ˜๋กœ ์ง€์ •๋œ ์นผ๋Ÿผ์— ๋Œ€ํ•ด ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ํ–‰ ์ค‘์—์„œ ์ตœ์†Œ๊ฐ’๊ณผ ์ตœ๋Œ€๊ฐ’

- ๋ฌธ์ž ๋ฐ์ดํ„ฐ ํƒ€์ž…์—๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

 

 

STDDEV ํ‘œ์ค€ํŽธ์ฐจ, VARIANCE ๋ถ„์‚ฐ

- ์ธ์ˆ˜๋กœ ์ง€์ •๋œ ์นผ๋Ÿผ์— ๋Œ€ํ•ด ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ํ–‰์„ ๋Œ€์ƒ์œผ๋กœ ํ‘œ์ค€ํŽธ์ฐจ, ๋ถ„์‚ฐ

- ์ˆซ์ž ๋ฐ์ดํ„ฐ ํƒ€์ž…์—๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

- NULL์€ ์—ฐ์‚ฐ์—์„œ ์ œ์™ธ


๋ฐ์ดํ„ฐ ๊ทธ๋ฃน ์ƒ์„ฑ

GROUP BY์ ˆ

- ํŠน์ • ์นผ๋Ÿผ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ํ…Œ์ด๋ธ”์˜ ์ „์ฒด ํ–‰์„ ๊ทธ๋ฃน๋ณ„๋กœ ๋‚˜๋ˆ„๊ธฐ ์œ„ํ•œ ์ ˆ

- GROUP BY ์ ˆ์— ๋ช…์‹œ๋˜์ง€ ์•Š์€ ์นผ๋Ÿผ์€ ๊ทธ๋ฃนํ•จ์ˆ˜์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ

 

GROUP BY์ ˆ ์ ์šฉ ๊ทœ์น™

- ๊ทธ๋ฃนํ•‘ ์ „์— WHERE์ ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ทธ๋ฃน ๋Œ€์ƒ ์ง‘ํ•ฉ์„ ๋จผ์ € ์„ ํƒ

- GROUP BY์ ˆ์—๋Š” ๋ฐ˜๋“œ์‹œ ์นผ๋Ÿผ ์ด๋ฆ„์„ ํฌํ•จํ•ด์•ผ ํ•˜๋ฉฐ, ์นผ๋Ÿผ ๋ณ„๋ช…์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ

- SELECT์ ˆ์—์„œ ๋‚˜์—ด๋œ ์นผ๋Ÿผ ์ด๋ฆ„์ด๋‚˜ ํ‘œํ˜„์‹์€ GROUP BY์ ˆ์—์„œ ๋ฐ˜๋“œ์‹œ ๋ช…์‹œ๋˜์–ด์•ผ ํ•จ

  (GROUP BY์ ˆ์— ๋ช…์‹œ๋œ ์นผ๋Ÿผ์ด SELECT์ ˆ์— ์—†๋Š” ๊ฒƒ์€ ๊ฐ€๋Šฅ)

 

๋‹จ์ผ ์นผ๋Ÿผ ๊ทธ๋ฃนํ•‘

- GROUP BY ์ ˆ์— ํ•˜๋‚˜์˜ ์นผ๋Ÿผ

 

๋‹ค์ค‘ ์นผ๋Ÿผ ๊ทธ๋ฃนํ•‘

- GROUP BY ์ ˆ์— ํ•˜๋‚˜ ์ด์ƒ์˜ ์นผ๋Ÿผ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ทธ๋ฃน์„ ๋‚˜๋ˆ„๊ณ , ๊ทธ๋ฃน๋ณ„๋กœ ๋‹ค์‹œ ์„œ๋ธŒ๊ทธ๋ฃน ๋‚˜๋ˆ”

ex) group by (deptno, postion) ์ „์ฒด ๊ต์ˆ˜๋ฅผ ํ•™๊ณผ๋ณ„๋กœ ๋จผ์ € ๊ทธ๋ฃนํ•‘ํ•œ ๋‹ค์Œ, ํ•™๊ณผ๋ณ„ ๊ต์ˆ˜๋ฅผ ์ง๊ธ‰๋ณ„๋กœ ๋‹ค์‹œ ๊ทธ๋ฃนํ•‘ ํ•˜๋Š” ๊ฒฝ์šฐ

 

ROLLUP, CUBE ์—ฐ์‚ฐ์ž

> ROLLUP ์—ฐ์‚ฐ์ž

- GROUP BY ์ ˆ์˜ ๊ทธ๋ฃน์กฐ๊ฑด์— ๋”ฐ๋ผ ์ „์ฒด ํ–‰์„ ๊ทธ๋ฃนํ™”ํ•˜๊ณ  ๊ฐ ๊ทธ๋ฃน์— ๋Œ€ํ•ด ๋ถ€๋ถ„ํ•ฉ์„ ๊ตฌํ•˜๋Š” ์—ฐ์‚ฐ์ž

- GROUP BY ์ ˆ์— ์นผ๋Ÿผ์˜ ์ˆ˜๊ฐ€ N๊ฐœ์ด๋ฉด ROLLUP์˜ ๊ทธ๋ฃนํ•‘ ์กฐํ•ฉ์€ N+1๊ฐœ

select ์นผ๋Ÿผ๋ช…, ๊ทธ๋ฃนํ•จ์ˆ˜(์นผ๋Ÿผ๋ช…)
from ํ…Œ์ด๋ธ”
[where ์กฐ๊ฑด]
[group by rollup(๊ทธ๋ฃน_์นผ๋Ÿผ๋ช…|ํ‘œํ˜„์‹)]
[having ๊ทธ๋ฃน_์กฐ๊ฑด]

 

> CUBE ์—ฐ์‚ฐ์ž

- ROLLUP์— ์˜ํ•œ ๊ทธ๋ฃน ๊ฒฐ๊ณผ์™€ GROUP BY ์ ˆ์— ๊ธฐ์ˆ ๋œ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๊ทธ๋ฃน ์กฐํ•ฉ์„ ๋งŒ๋“œ๋Š” ์—ฐ์‚ฐ์ž

- GROUP BY์ ˆ์— ์นผ๋Ÿผ์˜ ์ˆ˜๊ฐ€ N๊ฐœ์ด๋ฉด CUBE ๊ทธ๋ฃนํ•‘ ์กฐํ•ฉ์€ 2N๊ฐœ

select ์นผ๋Ÿผ๋ช…, ๊ทธ๋ฃนํ•จ์ˆ˜(์นผ๋Ÿผ๋ช…)
from ํ…Œ์ด๋ธ”
[where ์กฐ๊ฑด]
[group by cube(๊ทธ๋ฃน_์นผ๋Ÿผ๋ช…|ํ‘œํ˜„์‹)]
[having ๊ทธ๋ฃน_์กฐ๊ฑด]

 

GROUPING ํ•จ์ˆ˜

- ์ธ์ˆ˜๋กœ ์ง€์ •๋œ ์นผ๋Ÿผ์ด ROLLUP์ด๋‚˜ CUBE ์—ฐ์‚ฐ์ž๋กœ ์ƒ์„ฑ๋œ ๊ทธ๋ฃน ์กฐํ•ฉ์—์„œ ์‚ฌ์šฉ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ 1 ๋˜๋Š” 0์œผ๋กœ ๋ฐ˜ํ™˜

- ์‚ฌ์šฉํ•˜๋ฉด 0, ์•„๋‹ˆ๋ฉด 1

- grouping ํ•จ์ˆ˜์— ์‚ฌ์šฉ๋˜๋Š” ์ธ์ˆ˜๋Š” group by ์ ˆ์— ์ง€์ •๋œ ์นผ๋Ÿผ ์ค‘ ํ•˜๋‚˜์—ฌ์•ผ ํ•จ

select ์นผ๋Ÿผ๋ช…, ๊ทธ๋ฃนํ•จ์ˆ˜(์นผ๋Ÿผ๋ช…), grouping(์นผ๋Ÿผ๋ช…)
from ํ…Œ์ด๋ธ”
[where ์กฐ๊ฑด]
[group by [rollup|cube] ๊ทธ๋ฃน_์นผ๋Ÿผ๋ช…|ํ‘œํ˜„์‹]
[having ๊ทธ๋ฃน_์กฐ๊ฑด]

 

GROUPING SETS ํ•จ์ˆ˜

- GROUP BY์ ˆ์—์„œ ๊ทธ๋ฃน ์กฐ๊ฑด์„ ์—ฌ๋Ÿฌ ๊ฐœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜

- ๊ฐ ๊ทธ๋ฃน ์กฐ๊ฑด์— ๋Œ€ํ•ด ๋ณ„๋„๋กœ GROUP BYํ•œ ๊ฒฐ๊ณผ๋ฅผ UNION ALL ํ•œ ๊ฒฐ๊ณผ์™€ ๋™์ผ

select ์นผ๋Ÿผ๋ช…, ๊ทธ๋ฃนํ•จ์ˆ˜(์นผ๋Ÿผ๋ช…), grouping(์นผ๋Ÿผ๋ช…)
from table
[where ์กฐ๊ฑด]
[group by [rollup|cube] ๊ทธ๋ฃน_์นผ๋Ÿผ๋ช…|ํ‘œํ˜„์‹]
          [grouping sets(์นผ๋Ÿผ๋ช…, ์นผ๋Ÿผ๋ช…, ...), ...]
[having ๊ทธ๋ฃน_์กฐ๊ฑด]

โ–ช  ๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์ˆ˜ ๊ฐœ์˜ ๊ทธ๋ฃน ์กฐ๊ฑด ์ง€์ • ๊ฐ€๋Šฅ

 

HAVING์ ˆ

- GROUP BY์ ˆ์— ์˜ํ•ด ์ƒ์„ฑ๋œ ๊ทธ๋ฃน์„ ๋Œ€์ƒ์œผ๋กœ ์กฐ๊ฑด์„ ์ ์šฉ (where์ ˆ์€ from์ ˆ์—์„œ ์ง€์ •๋œ ํ…Œ์ด๋ธ” ์ „์ฒด ๋Œ€์ƒ)

- HAVING์ ˆ์˜ ์‹คํ–‰ ๊ณผ์ •

  • ํ…Œ์ด๋ธ”์—์„œ WHERE์ ˆ์— ์˜ํ•ด ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ํ–‰ ์ง‘ํ•ฉ ์„ ํƒ
  • ํ–‰ ์ง‘ํ•ฉ์„ GROUP BY์ ˆ์— ์˜ํ•ด ๊ทธ๋ฃนํ•‘
  • HAVING์ ˆ์— ์˜ํ•ด ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ทธ๋ฃน ์„ ํƒ

- ๋‚ด๋ถ€ ์ •๋ ฌ ๊ณผ์ •์— ์˜ํ•ด ๊ทธ๋ฃนํ™”๋œ ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์— ๋Œ€ํ•ด ๊ฒ€์ƒ‰ ์กฐ๊ฑด ์‹คํ–‰ 

- where์ ˆ ๊ทธ๋ฃนํ™”ํ•˜๊ธฐ ์ „์— ๋จผ์ € ๊ฒ€์ƒ‰ ์กฐ๊ฑด ์‹คํ–‰ -> ๊ทธ๋ฃนํ™”ํ•˜๋Š” ํ–‰ ์ง‘ํ•ฉ ์ค„์—ฌ์„œ ๋‚ด๋ถ€ ์ •๋ ฌ ์‹œ๊ฐ„ ๋‹จ์ถ•

- where์ ˆ์—์„œ๋Š” ๊ทธ๋ฃนํ•จ์ˆ˜ ์‚ฌ์šฉ ๋ถˆ๊ฐ€(์•„์ง groupํ™” ์ด๋ฃจ์–ด์ง€์ง€ ์•Š์Œ)

select ์นผ๋Ÿผ๋ช…, ๊ทธ๋ฃนํ•จ์ˆ˜(์นผ๋Ÿผ๋ช…)
from ํ…Œ์ด๋ธ”
[where ์กฐ๊ฑด]
[group by ๊ทธ๋ฃน_์นผ๋Ÿผ๋ช…|ํ‘œํ˜„์‹]
[having ๊ทธ๋ฃน_์กฐ๊ฑด]
[order by ์นผ๋Ÿผ๋ช…]

 

 

ํ•จ์ˆ˜์˜ ์ค‘์ฒฉ

- SQL ํ•จ์ˆ˜ ์—ฌ๋Ÿฌ ๊ฐœ์˜ SQL ํ•จ์ˆ˜ ์ค‘์ฒฉ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

- ์ค‘์ฒฉ๋œ ํ•จ์ˆ˜ ์ฒ˜๋ฆฌ ์ˆœ์„œ

  • ๋งจ ์•ˆ์ชฝ ํ•จ์ˆ˜๋ถ€ํ„ฐ ์ฒ˜๋ฆฌํ•œ ํ›„, ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋ฐ”๊นฅ์ชฝ ํ•จ์ˆ˜์— ๋„˜๊น€

- ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์ค‘์ฒฉ ๋ ˆ๋ฒจ ์ œํ•œ ์—†์Œ ( ์‹ค๋ฌด์—์„œ๋Š” 3~4 ์ •๋„๊ฐ€ ์ ๋‹น )

 

 

 

 

 

 


์ฐธ๊ณ ๋„์„œ : ์˜ค๋ผํด ์ค‘์‹ฌ์˜ SQL๋ฐฐ์›€ํ„ฐ, ์šฐ์šฉํƒœ ์™ธ ๊ณต์ €, ์ƒ๋Šฅ์ถœํŒ์‚ฌ, 2007๋…„

๋ฐ˜์‘ํ˜•

BELATED ARTICLES

more