이숭간 공부기록

[프로그래머스] SQL고득점킷 _ GROUP BY 본문

알고리즘/프로그래머스

[프로그래머스] SQL고득점킷 _ GROUP BY

이숭간 2021. 8. 11. 18:37
728x90

1.

-- 코드를 입력하세요
SELECT ANIMAL_TYPE, COUNT(*) AS count
FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE
ORDER BY ANIMAL_TYPE ASC;

 

2. 

-- 코드를 입력하세요
SELECT NAME, COUNT(*) AS COUNT
FROM ANIMAL_INS
GROUP BY NAME
HAVING COUNT(*) >= 2 AND NAME IS NOT NULL
ORDER BY NAME;

 

3. 

-- 코드를 입력하세요
SELECT HOUR(DATETIME) AS HOUR, COUNT(*) AS COUNT
FROM ANIMAL_OUTS
GROUP BY HOUR
HAVING HOUR >= 9 AND HOUR <= 19
ORDER BY HOUR

 

4.  풀이 참고 _ 변수선언

 

  • MySQL에서 SET을 통해 변수를 선언할 수 있다. SET쿼리문에서 '='은 특별하게 대입연산자로 사용된다.
  • SET명령어가 아닌 쿼리문에서 '='는 비교연산자로 인식된다.
  • SET이 아닌 쿼리문에서 대입연산자는 ':='를 사용한다.
  • 0부터 23까지 디폴트로 증가시키는데 , 테이블에 있는 HOUR에 한해서만 총 레코드수를 집계해서 값을 넣는다.
-- 코드를 입력하세요
SET @HOUR_LIST = -1; -- 변수선언
SELECT (@HOUR_LIST := @HOUR_LIST+1) AS HOUR, 
(SELECT COUNT(*)
FROM ANIMAL_OUTS
WHERE HOUR(DATETIME) = @HOUR_LIST) AS COUNT
FROM ANIMAL_OUTS
WHERE @HOUR_LIST < 23;