๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป/ORACLE

[ORACLE] 4์ผ์ฐจ : SQLํ•จ์ˆ˜(์ง‘๊ณ„ ํ•จ์ˆ˜)

by ๋”ฐ๊ถˆ 2024. 3. 14.

 

์ง‘๊ณ„ํ•จ์ˆ˜

๋‹จ์ผํ–‰์ด ์•„๋‹Œ ํ–‰ ๊ทธ๋ฃน์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‹จ์ผ ๊ฒฐ๊ณผํ–‰์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. SELECT์ ˆ, ORDER BY ๋ฐ HAVING์ ˆ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, WHERE ์ ˆ์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ GROUP BY ์ ˆ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉ๋˜์ง€๋งŒ ํ…Œ์ด๋ธ” ์ „์ฒด๊ฐ€ ํ•˜๋‚˜์˜ ๊ทธ๋ฃน์ด ๋˜๋Š” ๊ฒฝ์šฐ GROUP BY์ ˆ ์—†์ด ๋‹จ๋…์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค. GROUP BY์ ˆ์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ์ปฌ๋Ÿผ์€ ์ง‘๊ณ„ ํ•จ์ˆ˜์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. 

COUNT ๋ฐ REGR_COUNT๋Š” null์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๊ณ  ์ˆซ์ž ๋˜๋Š” 0์„ ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ, ๋‚˜๋จธ์ง€ ์ง‘๊ณ„ ํ•จ์ˆ˜๋Š” ๋ฐ์ดํ„ฐ ์„ธํŠธ์— ํ–‰์ด ์—†๊ฑฐ๋‚˜ ์ง‘๊ณ„ ํ•จ์ˆ˜์˜ ์ธ์ˆ˜๋กœ NULL ๋˜๋Š” NULL์ธ ํ–‰๋งŒ ํฌํ•จํ•˜๋Š” ๊ฒฝ์šฐ NULL์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 

 

์ง‘๊ณ„ ํ•จ์ˆ˜ ์„ค๋ช…
COUNT(*) NULL ๊ฐ’์„ ํฌํ•จํ•œ ํ–‰์ˆ˜๋ฅผ ๋ฐ˜ํ™˜
COUNT([DISTINCT | ALL] expr) ํ‘œํ˜„์‹์˜ ๊ฐ’์ด NULL ๊ฐ’์ธ๊ฒƒ์„ ์ œ์™ธํ•œ ํ–‰ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋ฌธ์ž, ๋‚ ์งœ ๋ฐ์ดํ„ฐ ํƒ€์ž…๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.
MAX([DISTINCT | ALL] expr) ํ‘œํ˜„์‹์˜ ์ตœ๋Œ€๊ฐ’์„ ๋ฐ˜ํ™˜. ๋ฌธ์ž, ๋‚ ์งœ ๋ฐ์ดํ„ฐ ํƒ€์ž…๋„ ๊ฐ€๋Šฅ.
MIN([DISTINCT | ALL] expr) ํ‘œํ˜„์‹์˜ ์ตœ์†Œ๊ฐ’์„ ๋ฐ˜ํ™˜. ๋ฌธ์ž, ๋‚ ์งœ ๋ฐ์ดํ„ฐ ํƒ€์ž…๋„ ๊ฐ€๋Šฅ.
AVG([DISTINCT | ALL] expr) ํ‘œํ˜„์‹์˜ NULL ๊ฐ’์„ ์ œ์™ธํ•œ ํ‰๊ท ์„ ๋ฐ˜ํ™˜.
SUM([DISTINCT | ALL] expr) ํ‘œํ˜„์‹์˜ NULL ๊ฐ’์„ ์ œ์™ธํ•œ ํ•ฉ๊ณ„๋ฅผ ๋ฐ˜ํ™˜
VARIANCE([DISTINCT | ALL] expr) ํ‘œํ˜„์‹์˜ ๋ถ„์‚ฐ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
STDDEV([DISTINCT | ALL] expr) ํ‘œํ˜„์‹์˜ ํ‘œ์ค€ํŽธ์ฐจ๋ฅผ ๋ฐ˜ํ™˜

 

 

GROUP BY์ ˆ

SQL๋ฌธ์—์„œ FROM์ ˆ๊ณผ WHERE์ ˆ ๋’ค์— ์˜ค๋ฉฐ, ๋ฐ์ดํ„ฐ๋“ค์„ ์ž‘์€ ๊ทธ๋ฃน์œผ๋กœ ๋ถ„๋ฅ˜ํ•˜์—ฌ ์†Œ๊ทธ๋ฃน์— ๋Œ€ํ•œ ํ•ญ๋ชฉ๋ณ„๋กœ ํ†ต๊ณ„ ์ •๋ณด๋ฅผ ์–ป์„๋•Œ ์ถ”๊ฐ€๋กœ ์‚ฌ์šฉ๋œ๋‹ค. SELECT์ ˆ๊ณผ๋Š” ๋‹ฌ๋ฆฌ ALIAS๋ช…์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ์ง‘๊ณ„ ํ•จ์ˆ˜๋Š” WHERE์ ˆ์—๋Š” ์˜ฌ ์ˆ˜ ์—†๋‹ค. ์ง‘๊ณ„ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” GROUP BY์ ˆ๋ณด๋‹ค WHERE ์ ˆ์ด ๋จผ์ € ์‹คํ–‰๋œ๋‹ค. 

 

HAVING์ ˆ

์ง‘๊ณ„ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์กฐํšŒ๋œ ํ…Œ์ด๋ธ” ๋˜๋Š” ๋ทฐ์˜ ๊ฐœ๋ณ„ํ–‰ ๊ฐ’์ด ์•„๋‹ˆ๋ผ ์ง‘๊ณ„ ํ•จ์ˆ˜์˜ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ถœ๋ ฅ์—์„œ ๊ทธ๋ฃน์„ ์ œ๊ฑฐํ•œ๋‹ค. HAVING์ ˆ์€ SELECT์ ˆ์— ์‚ฌ์šฉ๋˜์ง€ ์•Š์€ ์ปฌ๋Ÿผ์ด๋‚˜ ์ง‘๊ณ„ ํ•จ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋”๋ผ๋„ GROUP BY์ ˆ์˜ ๊ธฐ์ค€ ํ•ญ๋ชฉ์ด๋‚˜ ์†Œ๊ทธ๋ฃน์˜ ์ง‘๊ณ„ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•œ ์กฐ๊ฑด์„ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

๊ตฌ๋ฌธ๋ถ„์„ ์‹คํ–‰๊ณผ์ •

  1. FROM์ ˆ : ๊ฒ€์ƒ‰์˜ ๋Œ€์ƒ์ด ๋˜๋Š” ํ…Œ์ด๋ธ”์ด๋‚˜ ๋ทฐ ๋˜๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ
  2. WHERE์ ˆ : ์ „์ฒด ๋ฐ์ดํ„ฐ ์ค‘ GROUP์œผ๋กœ ๋‚˜๋ˆ„๊ธฐ ์ „์— WHERE ์กฐ๊ฑด์— ๋งŒ์กฑํ•˜์ง€ ์•Š์€ ํ–‰๋“ค์„ ๋จผ์ € ์ œ๊ฑฐํ•œ๋‹ค.
  3. GROUP BY์ ˆ : ์†Œ ๊ทธ๋ฃน๋ณ„ ๊ธฐ์ค€์„ ์ •ํ•œ๋‹ค.
  4. HAVING์ ˆ : ์ง‘๊ณ„ ํ•จ์ˆ˜์˜ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ถœ๋ ฅ์—์„œ HAVING ์กฐ๊ฑด์— ๋งŒ์กฑํ•˜์ง€ ์•Š์€ ๊ทธ๋ฃน์„ ์ œ๊ฑฐํ•œ๋‹ค.
  5. SELECT์ ˆ : ๋‚˜์—ด๋œ ์ง‘๊ณ„ ํ•จ์ˆ˜์˜ ํ†ต๊ณ„ ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
  6. ORDER BY์ ˆ : ๋ช…์‹œ๋œ ํ‘œํ˜„์‹์„ ์ด์šฉํ•˜์—ฌ ์ •๋ ฌํ•œ