문제

πŸ“Œ MySQL 둜 풀이

 

πŸ“Œ λ¬Έμ œ 링크 :

 

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€

μ½”λ“œ μ€‘μ‹¬μ˜ 개발자 μ±„μš©. μŠ€νƒ 기반의 ν¬μ§€μ…˜ 맀칭. ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€μ˜ 개발자 λ§žμΆ€ν˜• ν”„λ‘œν•„μ„ λ“±λ‘ν•˜κ³ , λ‚˜μ™€ 기술 ꢁ합이 잘 λ§žλŠ” 기업듀을 맀칭 λ°›μœΌμ„Έμš”.

programmers.co.kr

 

πŸ“Œ λ¬Έμ œ μ„€λͺ… :

λ³΄ν˜Έμ†Œμ—μ„œλŠ” λͺ‡ μ‹œμ— μž…μ–‘μ΄ κ°€μž₯ ν™œλ°œν•˜κ²Œ μΌμ–΄λ‚˜λŠ”μ§€ μ•Œμ•„λ³΄λ € ν•©λ‹ˆλ‹€. 0μ‹œλΆ€ν„° 23μ‹œκΉŒμ§€, 각 μ‹œκ°„λŒ€λ³„λ‘œ μž…μ–‘μ΄ λͺ‡ κ±΄μ΄λ‚˜ λ°œμƒν–ˆλŠ”μ§€ μ‘°νšŒν•˜λŠ” SQL문을 μž‘μ„±ν•΄μ£Όμ„Έμš”. μ΄λ•Œ κ²°κ³ΌλŠ” μ‹œκ°„λŒ€ 순으둜 μ •λ ¬ν•΄μ•Ό ν•©λ‹ˆλ‹€.

 

πŸ“Œ ν…Œμ΄λΈ” :

ANIMAL_OUTS ν…Œμ΄λΈ”은 동물 λ³΄ν˜Έμ†Œμ—μ„œ μž…μ–‘ 보낸 λ™λ¬Όμ˜ 정보λ₯Ό 담은 ν…Œμ΄λΈ”μž…λ‹ˆλ‹€. ANIMAL_OUTS ν…Œμ΄λΈ” κ΅¬μ‘°λŠ” λ‹€μŒκ³Ό κ°™μœΌλ©°, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOMEλŠ” 각각 λ™λ¬Όμ˜ 아이디, 생물 μ’…, μž…μ–‘μΌ, 이름, 성별 및 쀑성화 μ—¬λΆ€λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

ANIMAL_ID VARCHAR(N) FALSE
ANIMAL_TYPE VARCHAR(N) FALSE
DATETIME DATETIME FALSE
NAME VARCHAR(N) TRUE
SEX_UPON_OUTCOME VARCHAR(N) FALSE

 


풀이

쿼리) 

SET @HOUR = -1;
SELECT 
    (@HOUR := @HOUR + 1) AS HOUR,
    (SELECT 
        COUNT(*)
    FROM ANIMAL_OUTS 
    WHERE HOUR(DATETIME) = @HOUR) AS COUNT
FROM ANIMAL_OUTS
WHERE @HOUR < 23;

 

리뷰) 

이 λ¬Έμ œμ— λŒ€ν•΄μ„œλŠ” 쿼리둜 ν…Œμ΄λΈ”μ„ λ§Œλ“œλŠ” 방법을 λͺ¨λ₯΄κ² μ–΄μ„œ λ‹€λ₯Έ μ‚¬λžŒμ˜ 풀이λ₯Ό μ°Έμ‘°ν•΄μ„œ κ³΅λΆ€ν–ˆλ‹€

μ—¬κΈ°μ„œ μ€‘μš”ν•œκ±΄, μΏΌλ¦¬μ—μ„œλ„ λ³€μˆ˜λ₯Ό ν™œμš©ν•  수 μžˆλ‹€λŠ” 것!!!! 

 

μ‚¬μš©ν•˜λŠ” 방식은 

SET @λ³€μˆ˜λͺ… = λ³€μˆ˜κ°’; 

으둜 @(앳사인)뒀에 λ³€μˆ˜λͺ…을 μ •ν•΄μ£Όκ³  ν•΄λ‹Ή λ³€μˆ˜μ— 값을 μ„ μ–Έν•˜λ©΄ λœλ‹€. 그리고 μ΄ν›„μ˜ SELECTλ¬Έκ³Ό κ΅¬λΆ„λ˜κΈ° μœ„ν•΄ ;(μ„Έλ―Έμ½œλ‘ )은 ν•„μˆ˜λ‹€. 

 

μ΄λ ‡κ²Œ μ„ μ–Έν•˜κ³ λ‚˜μ„œ SELECTλ¬Έμ—μ„œ @λ³€μˆ˜λͺ…μœΌλ‘œ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜κ²Œλ˜κ³ 

λ§Œμ•½ SELECTλ¬Έ μ•ˆμ—μ„œ λ³€μˆ˜μ— 값을 λ‹€μ‹œ λŒ€μž…ν•΄μ•Ό ν•œλ‹€λ©΄ λ‹¨μˆœνžˆ = (이퀄)만 μ‚¬μš©ν•˜λŠ” 게 μ•„λ‹ˆλΌ := (콜둠 + 이퀄)을 ν•΄μ•Ό λ³€ν•œ 값이 λŒ€μž…μ΄ λœλ‹€. 

 

κ·Έλž˜μ„œ 이λ₯Ό μ°Έκ³ ν•΄μ„œ μ•„λž˜ μ§ˆμ˜λ¬Έμ„ νŒŒμ•…ν•΄λ³΄λ©΄ μš”λ ‡κ²Œ λœλ‹€.

SET @HOUR = -1; 	# @HOURμ΄λž€ λ³€μˆ˜μ— -1을 λŒ€μž…
SELECT 
    (@HOUR := @HOUR + 1) AS HOUR,	# @HOUR에 @HOURμ—μ„œ +1ν•œ 값을 λ‹€μ‹œ λŒ€μž…ν•΄μ„œ 0λΆ€ν„° 좜λ ₯
    (SELECT 
        COUNT(*)	# 7라인에 μΌμΉ˜ν•˜λŠ” μ‹œκ°„ κ²ƒλ§Œ μ‘°νšŒν•˜λ‹ˆ μ „μ²΄μ‘°νšŒ COUNTν•˜λ©΄ κ·Έμ‹œκ°„λŒ€ μž…μ–‘λœ 수
    FROM ANIMAL_OUTS 
    WHERE HOUR(DATETIME) = @HOUR) AS COUNT	# 그리고 μ‘°κ±΄μ—μ„œλ„ 이 @λ³€μˆ˜μ™€ μΌμΉ˜ν•˜λŠ” 쑰건
FROM ANIMAL_OUTS
WHERE @HOUR < 23;	# 이 쑰건으둜 @HOUR은 22κΉŒμ§€μ§€λ§Œ SELECTλ¬Έ μ•ˆμ—μ„œ +1ν•˜λŠ” κ΅¬λ¬Έλ•Œλ¬Έμ— 23κΉŒμ§€ 좜λ ₯

+ Recent posts