본문 바로가기
Develop/SQL

[프로그래머스] SQL 고득점 키트 (MySQL) - GROUP BY

by 루시킴 2021. 9. 14.

https://programmers.co.kr/learn/courses/30/lessons/59040

 

코딩테스트 연습 - 고양이와 개는 몇 마리 있을까

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

SELECT ANIMAL_TYPE,COUNT(*) as count FROM ANIMAL_INS GROUP BY ANIMAL_TYPE ORDER BY ANIMAL_TYPE;

https://programmers.co.kr/learn/courses/30/lessons/59041

 

코딩테스트 연습 - 동명 동물 수 찾기

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

SELECT NAME, COUNT(NAME) AS 'COUNT' FROM ANIMAL_INS GROUP BY NAME HAVING COUNT>=2 ORDER BY NAME;

GROUP BY ~ HAVING

HAVING은 GROUP BY 뒤에 나오는 WHERE절 같은 조건절로 GROUP BY한 결과에 조건을 붙이고 싶을때 사용한다.

 

https://programmers.co.kr/learn/courses/30/lessons/59412

 

코딩테스트 연습 - 입양 시각 구하기(1)

ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물

programmers.co.kr

SELECT HOUR(DATETIME) HOUR, COUNT(DATETIME) COUNT FROM ANIMAL_OUTS GROUP BY HOUR(DATETIME) HAVING HOUR>=9 AND HOUR<=19 ORDER BY HOUR(DATETIME);

HOUR()는 시를 추출하는 함수이다.

이밖에도, 아래와 같은 함수들이 존재한다.

 

  • YEAR : 연도 추출
  • MONTH : 월 추출
  • DAY : 일 추출 (DAYOFMONTH와 같은 함수)
  • HOUR : 시 추출
  • MINUTE : 분 추출
  • SECOND : 초 추출


https://programmers.co.kr/learn/courses/30/lessons/59413

 

코딩테스트 연습 - 입양 시각 구하기(2)

ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물

programmers.co.kr

SET @hour:=-1;

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

SET 변수는 말그대로 어떤 변수에 특정 값을 할당하기 위한 사용자 정의 변수이고, :=은 비교 연산자 =과 혼동을 피하기 위한의 대입 연산이다.

SELECT (@hour := @hour +1) 과 WHERE @hour<23을 통해 @hour의 값에 1씩 증가시키면서 22까지 SELECT 문 전체를 실행하게 된다.

댓글