λ°˜μ‘ν˜•

숫자 데이터 μš”μ•½ν•˜κΈ°

 

COUNT ν•¨μˆ˜

 

 

  • 집계 ν•¨μˆ˜ 정리

 

1. COUNT : ν–‰μ˜ 수λ₯Ό λ‚˜νƒ€λƒ„

 

=> NULL값을 ν¬ν•¨ν•œ 전체 ν–‰μ˜ 수 : COUNT(*)

=> NULL값을 μ œμ™Έν•œ 전체 ν–‰μ˜ 수 : COUNT(μ—΄ 이름)

=> 쀑볡을 μ œμ™Έν•œ ν–‰μ˜ 수 : COUNT(DISTINCT μ—΄ 이름)

 

2. SUM : ν–‰μ˜ 합계λ₯Ό λ‚˜νƒ€λƒ„

 

3. AVG : ν–‰μ˜ 평균을 λ‚˜νƒ€λƒ„

 

4. MAX : ν–‰μ˜ μ΅œλŒ“κ°’μ„ λ‚˜νƒ€λƒ„

 

5. MIN : ν–‰μ˜ μ΅œμ†Ÿκ°’μ„ λ‚˜νƒ€λƒ„

 

6. STDENV : ν–‰μ˜ ν‘œμ€€νŽΈμ°¨λ₯Ό λ‚˜νƒ€λƒ„

 

7. VARIANCE : ν–‰μ˜ 뢄산을 λ‚˜νƒ€λƒ„

 

STUD_SCORE

 

1. STUD_SCORE ν…Œμ΄λΈ”μ„ μ‚¬μš©ν•˜μ—¬ NULL 값을 μ œμ™Έν•œ μŒμ•… 점수 보유자λ₯Ό μ„Έλ €λ©΄?

 

SELECT COUNT(MUSIC_SCORE) AS MUSIC_CNT
FROM STUD_SCORE;

 

2. STUD_SCORE ν…Œμ΄λΈ”μ„ μ‚¬μš©ν•˜μ—¬ NULLκ°’ 및 μ€‘λ³΅λœ 값을 μ œμ™Έν•œ μ˜μ–΄ 점수 보유자λ₯Ό μ„Έλ €λ©΄?

 

SELECT COUNT(DISTINCT ENG_SCORE) AS ENG_CNT
FROM STUD_SCORE;

 

COUNT ν•¨μˆ˜λŠ” λ°μ΄ν„°μ˜ κ²€μ¦μš©μœΌλ‘œλ„ 많이 μ‚¬μš©λ¨

=> νŠΉμ •ν•œ ν…Œμ΄λΈ”μ„ λ§Œλ“€μ—ˆμ„ λ•Œ κ·Έ ν…Œμ΄λΈ”μ— NULLκ°’μ΄λ‚˜ μ€‘λ³΅λœ 값이 μžˆλŠ”μ§€ 눈으둜 μ°ΎκΈ° νž˜λ“¬
(COUNT둜 μ‰½κ²Œ 검증 κ°€λŠ₯)

 

3. STUD_SCORE ν…Œμ΄λΈ”μ„ μ‚¬μš©ν•˜μ—¬ μŒμ•… 점수의 평균을 κ΅¬ν•˜λ €λ©΄?

 

AVG ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ NULL값을 κ°€μ§„ 열은 κ³„μ‚°μ—μ„œ μƒλž΅λ˜μ–΄ 전체 평균값이 잘λͺ»λ  수 μžˆμœΌλ―€λ‘œ μ£Όμ˜ν•΄μ•Όν•¨!!

=> COALESCE μ‚¬μš©

 

SELECT AVG(COALESCE(MUSIC_SCORE, 0)) AS MUSIC_AVG
FROM STUD_SCORE;

 

4. STUD_SCORE ν…Œμ΄λΈ”μ„ μ‚¬μš©ν•˜μ—¬ μˆ˜ν•™ 점수의 μ΅œλŒ“κ°’ 및 μ΅œμ†Ÿκ°’μ„ κ΅¬ν•˜λ €λ©΄?

 

SELECT MAX(MATH_SCORE) AS MAX_SCORE, MIN(MATH_SCORE) AS MIN_SCORE
FROM STUD_SCORE;

 

1. 집계 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ NULL값은 κ³„μ‚°μ—μ„œ λ¬΄μ‹œλœλ‹€

2. 별칭을 μ§€μ •ν•  λ•Œ ν…Œμ΄λΈ”μ— μ‘΄μž¬ν•˜λŠ” μ—΄ 이름이 μ•„λ‹Œ μƒˆλ‘œμš΄ μ΄λ¦„μœΌλ‘œ μ§€μ •ν•˜λŠ” 것이 μ’‹μŒ

3. μˆ«μžν˜• 데이터λ₯Ό 뢄석할 λ•Œ SUM, AVG,MIN,MAX 값을 μ‚¬μš©ν•˜μ—¬ 데이터λ₯Ό κ²€μ¦ν•˜λŠ” 것은 μ€‘μš”ν•¨

 

쑰건문 μ΄ν•΄ν•˜κΈ°

 

CASE WHEN λ¬Έμž₯

 

 

1. CASE WHEN λ¬Έμž₯

 

[쑰건1]을 λ§Œμ‘±ν•˜λ©΄ [κ²°κ³Όκ°’1]을 λ‚˜νƒ€λ‚΄κ³ , [쑰건2]λ₯Ό λ§Œμ‘±ν•˜λ©΄ [κ²°κ³Όκ°’2]λ₯Ό λ‚˜νƒ€λ‚Έλ‹€

λ‚˜λ¨Έμ§€λŠ” [κ²°κ³Όκ°’3]으둜 보여주고 이듀 결과값은 [μƒˆλ‘œμš΄ μ—΄ 이름]으둜 λ‚˜νƒ€λ‚΄λΌλŠ” λœ»μ΄λ‹€!

 

=> 쑰건물을 λ‚˜νƒœλ‚Ό λ•Œ μ‚¬μš©λ˜κ³  ν™œμš©λ„κ°€ λ†’μŒ

 

SELECT μ—΄ 이름1,

    CASE WHEN [쑰건1] THEN [κ²°κ³Όκ°’1]
         WHEN [쑰건2] THEN [κ²°κ³Όκ°’2]
         ELSE [κ²°κ³Όκ°’3] END AS μƒˆλ‘œμš΄ μ—΄ 이름

FROM ν…Œμ΄λΈ”λͺ…;

 

STAFF_SAL

 

1. CLERKλŠ” 7%, OFFICERλŠ” 5%, MANAGERλŠ” 3%둜 연봉을 μΈμƒν•˜κΈ°λ‘œ ν–ˆμ„ λ•Œ STAFF_SAL ν…Œμ΄λΈ”μ„ μ‚¬μš©ν•˜μ—¬ 각 직원별 인상 연봉을 μ˜ˆμƒν•˜λ €λ©΄?

 

SELECT ID, JOB, CURRENT_SAL,
	
    CASE WHEN JOB = 'CLERK' THEN CURRENT_SAL * 1.07
         WHEN JOB = 'OFFICER' THEN CURRENT_SAL * 1.05
         WHEN JOB = 'MANAGER' THEN CURRENT_SAL * 1.03 
         ELSE CURRENT_SAL END AS NEXT_SAL

FROM STAFF_SAL;

 

CASE WHEN ν•¨μˆ˜μ—μ„œ EQUAL 쑰건만 μžˆμ„ 경우 DECODE ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€
(DBMS νŠΉμ„±μ— 따라 지원이 μ•ˆλ˜λŠ” κ²½μš°λ„ 있음)

DECODE ν•¨μˆ˜ 문법 :
DECODE(μ—΄ 이름, 쑰건1, κ²°κ³Όκ°’1,
                               μ‘°κ±΄2, κ²°κ³Όκ°’2,
                               μ‘°κ±΄3, κ²°κ³Όκ°’3, κΈ°λ³Έκ°’) μƒˆλ‘œμš΄ μ—΄ 이름)
λ°˜μ‘ν˜•