๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
[๊ฐœ๋ฐœ] Practice/SQL Database

[SQL / Database] ์ง‘๊ณ„ํ•จ์ˆ˜๋กœ ํ†ต๊ณ„๋‚ด๊ธฐ

by Connecting-the-dots 2023. 5. 26.
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ’ก ์ง‘๊ณ„ํ•จ์ˆ˜๋กœ ํ†ต๊ณ„๋‚ด๊ธฐ

๐Ÿ’œ ๊ธฐ๋ณธ ์ง‘๊ณ„ํ•จ์ˆ˜ ์•Œ์•„๋ณด๊ธฐ

๐Ÿค MAX() / MIN() ์œผ๋กœ ์ตœ๋Œ€๊ฐ’ / ์ตœ์†Œ๊ฐ’ ์ฐพ๊ธฐ

// ์ตœ๋Œ€๊ฐ’ ์ฐพ๊ธฐ
SELECT MAX(์ปฌ๋Ÿผ๋ช…) FROM ํ…Œ์ด๋ธ”๋ช…

// ์ตœ์†Œ๊ฐ’ ์ฐพ๊ธฐ
SELECT MIN(์ปฌ๋Ÿผ๋ช…) FROM ํ…Œ์ด๋ธ”๋ช…
  • ์ˆซ์ž๊ฐ€ ๋“ค์–ด์žˆ๋Š” ์ปฌ๋Ÿผ์—์„œ ์ตœ๋Œ€๊ฐ’์„ ์ฐพ๊ณ  ์‹ถ์œผ๋ฉด MAX() ๋‚˜ MIN() ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.
  • ์ฐธ๊ณ ๋กœ ์†Œ๊ด„ํ˜ธ๊ฐ€ ๋ถ™์–ด์žˆ๋Š” ๊ฒƒ์€ ํ•จ์ˆ˜๋ผ๊ณ  ์ง€์นญํ•œ๋‹ค.

๐Ÿค AVG() ๋กœ ํ‰๊ท ๊ฐ’ ๊ตฌํ•˜๊ธฐ

SELECT AVG(์ปฌ๋Ÿผ๋ช…) FROM ํ…Œ์ด๋ธ”๋ช…
  • ์ˆซ์ž๊ฐ€ ๋“ค์–ด์žˆ๋Š” ์ปฌ๋Ÿผ์—์„œ ์ปฌ๋Ÿผ ๋‚ด ์ˆซ์ž๋“ค์˜ ํ‰๊ท ์„ ๊ตฌํ•˜๊ณ  ์‹ถ์œผ๋ฉด AVG() ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

๐Ÿค SUM() ์œผ๋กœ ํ•ฉ๊ณ„ ๊ตฌํ•˜๊ธฐ

SELECT SUM(์ปฌ๋Ÿผ๋ช…) FROM ํ…Œ์ด๋ธ”๋ช…
  • ์ˆซ์ž๊ฐ€ ๋“ค์–ด์žˆ๋Š” ์ปฌ๋Ÿผ์—์„œ ์ปฌ๋Ÿผ ๋‚ด ์ˆซ์ž๋“ค์˜ ํ•ฉ๊ณ„๋ฅผ ๊ตฌํ•˜๊ณ  ์‹ถ์œผ๋ฉด SUM() ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

๐Ÿค COUNT() ๋กœ ํ–‰์˜ ๊ฐœ์ˆ˜ ์„ธ๊ธฐ

SELECT COUNT(์ปฌ๋Ÿผ๋ช…) FROM ํ…Œ์ด๋ธ”๋ช…
  • ์ด ํ–‰์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ธ๊ณ  ์‹ถ์œผ๋ฉด  COUNT() ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.
  • ๋‹จ์ง€ ์ˆซ์ž๋ฅผ ์„ธ์–ด์ค„ ๋ฟ์ด๋ฏ€๋กœ ์ปฌ๋Ÿผ๋ช… ๋Œ€์‹  * ์„ ๋„ฃ์–ด COUNT(*) ์ด๋ผ๊ณ  ํ•ด๋„ ๊ฒฐ๊ณผ๋Š” ๋™์ผํ•˜๋‹ค.

๐Ÿ’œ ์‘์šฉํ•˜๊ธฐ

๐Ÿค AS ๋กœ ์ปฌ๋Ÿผ๋ช… ๋ณ€๊ฒฝํ•˜๊ธฐ (์ปฌ๋Ÿผ๋ช… ๋ณ„์นญ ๋ถ™์ด๊ธฐ)

SELECT ์ปฌ๋Ÿผ๋ช… AS ์ปฌ๋Ÿผ๋ช…๋ณ„์นญ FROM ํ…Œ์ด๋ธ”๋ช…
  • ์ง‘๊ณ„ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ปฌ๋Ÿผ๋ช…์—๋„ ์ง‘๊ณ„ํ•จ์ˆ˜๊ฐ€ ๊ทธ๋Œ€๋กœ ๋“ค์–ด๊ฐ€๋Š”๋ฐ, ์ด๋Ÿฌํ•œ ์ปฌ๋Ÿผ๋ช…์„ ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด AS ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ์กด์˜ ์ปฌ๋Ÿผ๋ช…์„ ๋ณ„์นญ์œผ๋กœ ๋ฐ”๊พธ์–ด์ฃผ๋ฉด ๋œ๋‹ค.
  • ์ปฌ๋Ÿผ๋ช…๋ณ„์นญ์˜ ๊ฒฝ์šฐ ์‹ค์ œ ์กด์žฌํ•˜๋Š” ์ปฌ๋Ÿผ๋ช…์ด ์•„๋‹Œ ๋‹ค๋ฅธ ๋‹จ์–ด๋กœ ๋ณ„์นญ์„ ๋ถ™์—ฌ์•ผ ์ปดํ“จํ„ฐ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ธ์‹ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿค ํ•„ํ„ฐ๋ง ํ›„์— ํ†ต๊ณ„๋‚ด๊ธฐ

SELECT AVG(์ปฌ๋Ÿผ๋ช…) FROM ํ…Œ์ด๋ธ”๋ช… WHERE ์กฐ๊ฑด์‹
  • ์œ„์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ SQL ์„ ์ž‘์„ฑํ•˜๋ฉด ํ•„ํ„ฐ๋งํ•œ ๊ฒฐ๊ณผ์—์„œ ํ†ต๊ณ„๋ฅผ ๋‚ด๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

๐Ÿค DISTINCT ๋กœ ์ค‘๋ณต์ œ๊ฑฐํ•˜๊ธฐ

SELECT AVG(DISTINCT ์ปฌ๋Ÿผ๋ช…) FROM ํ…Œ์ด๋ธ”๋ช…
  • ์ปฌ๋Ÿผ์„ ์ถœ๋ ฅํ•  ๋•Œ ์™ผ์ชฝ์— DISTINCT ํ‚ค์›Œ๋“œ๋ฅผ ๋ถ™์—ฌ์ฃผ๋ฉด ์ค‘๋ณต๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ฑฐํ•ด์„œ ์œ ๋‹ˆํฌํ•œ ๊ฐ’๋งŒ์„ ํ•„ํ„ฐ๋งํ•ด์ค€๋‹ค.
  • DISTINCT ํ‚ค์›Œ๋“œ๋Š” ์ง‘๊ณ„ํ•จ์ˆ˜์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

๐Ÿค MAX() / MIN() ๋Œ€์‹  LIMIT ํ™œ์šฉํ•˜๊ธฐ

// ์ตœ๋Œ€๊ฐ’ ๊ตฌํ•˜๊ธฐ
SELECT * FROM ํ…Œ์ด๋ธ”๋ช… ORDER BY ์ปฌ๋Ÿผ๋ช… DESC LIMIT 1

// ์ตœ์†Œ๊ฐ’ ๊ตฌํ•˜๊ธฐ
SELECT * FROM ํ…Œ์ด๋ธ”๋ช… ORDER BY ์ปฌ๋Ÿผ๋ช… LIMIT 1
  • ์ตœ๋Œ€๊ฐ’, ์ตœ์†Œ๊ฐ’์„ ๊ตฌํ•˜๊ธฐ์—๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ๊ฑฐ๋‚˜ MAX(), MIN() ์„ ์‚ฌ์šฉํ•˜๊ธฐ์— ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ผ๋ถ€ ํ™˜๊ฒฝ์—์„œ๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ, ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ๋งจ ์œ„ ๋ฐ์ดํ„ฐ๋งŒ ํ•˜๋‚˜ ๋ฝ‘์•„์„œ ์ตœ๋Œ€๊ฐ’, ์ตœ์†Œ๊ฐ’์„ ๊ตฌํ•˜๊ธฐ๋„ ํ•œ๋‹ค.
  • Oracle ์—์„œ๋Š” 'LIMIT ํ–‰ ๊ฐœ์ˆ˜' ๊ฐ€ ์•„๋‹ˆ๋ผ 'FETCH FIRST ํ–‰ ๊ฐœ์ˆ˜ ROWS ONLY' ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 
728x90
๋ฐ˜์‘ํ˜•