๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ›‹๏ธ ๋ฐ์ดํ„ฐ ๋ถ„์„/๐Ÿ“‚ SQL

COUNT OVER( )๋กœ ๊ทธ๋ฃน๋ณ„ ์ง‘๊ณ„ํ•˜๊ธฐ

by ์œ ์Šค :) 2024. 12. 14.
๋ฐ˜์‘ํ˜•

1. COUNT( ) OVER( ) 

  • COUNT ํ•จ์ˆ˜๋ฅผ OVER์ ˆ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด GROUP BY์ ˆ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ „์ฒด ๊ฑด์ˆ˜, ๊ทธ๋ฃน๋ณ„ ๊ฑด์ˆ˜๋ฅผ ์ง‘๊ณ„ํ•ด์„œ ๊ฐ ํ–‰์— ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค. 

1) ์ „์ฒด ์ด ๊ฑด์ˆ˜ ๊ตฌํ•˜๊ธฐ

COUNT(*) OVER()

SELECT *, COUNT(*) OVER() AS TOTAL_COUNT
FROM ECOLI_DATA

 

๋‹จ์ˆœํžˆ COUNT(*)๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์กฐํšŒ๋œ ๋ฐ์ดํ„ฐ์˜ ์ด ๊ฑด์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค. 

TOTAL_COUNT > ๋ชจ๋‘ ๋™์ผํ•˜๊ฒŒ ์ „์ฒด ๋ฐ์ดํ„ฐ ๊ฑด์ˆ˜ ๊ฐ’์„ ํ‘œ์‹œํ•จ. 

 

* OVER ์ ˆ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ๋‘ ์กฐํšŒ๋œ ํ›„ ORDER BY ์‹คํ–‰๋˜๊ธฐ ๋ฐ”๋กœ ์ „์— ์‹คํ–‰๋จ. 

 

2) ์ˆœ์ฐจ์  ๋ˆ„์  ๊ฑด์ˆ˜ ๊ตฌํ•˜๊ธฐ

 

COUNT(*) OVER(ORDER BY COLNAME) AS ALIAS

 

SELECT *, COUNT(*) OVER(ORDER BY PARENT_ID DESC) AS PARENT_CNT
FROM ECOLI_DATA

 

OVER ์ ˆ ๋‚ด๋ถ€์— ORDER BY๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ์ •๋ ฌ์„ ๋จผ์ € ํ•œ ํ›„, ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฑด์ˆ˜๋ฅผ ๋ˆ„์ ์ง‘๊ณ„ํ•œ๋‹ค. 

PARENT_ID์˜ ๋‚ด๋ฆผ์ฐจ์ˆœ์„ ๊ธฐ์ค€์œผ๋กœ ๋ˆ„์  ๊ฐ’์ด PARENT_CNT์˜ ๊ฐ’์œผ๋กœ ๋“ค์–ด๊ฐ„ ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

(PARENT_CNT์˜ ๊ฐ’์ด Uniqueํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ 1๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ ํ‘œ์‹œ๋˜์ง€ ์•Š์•˜๋‹ค.)

 

3) ๊ทธ๋ฃน๋ณ„ ์ด ๊ฑด์ˆ˜ ๊ตฌํ•˜๊ธฐ

 

COUNT(*) OVER(PARTITION BY COLNAME) AS ALIAS

 

SELECT *, COUNT(*) OVER(PARTITION BY DIFFERENTIATION_DATE ) AS DATE_CNT
FROM ECOLI_DATA

 

PARTITION BY๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๊ทธ๋ฃน๋ณ„๋กœ ์ด ๊ฑด์ˆ˜๋ฅผ ๊ตฌํ•ด์„œ ํ‘œ์‹œํ•œ๋‹ค. 

 



๋ฐ˜์‘ํ˜•