이 글은 프로그래머스 SQL 고득점 KIT 중 GROUP BY 문제들의 답과 푸는 데에 필요한 개념들을 담고 있다.
필요한 개념
group by
,having
설명-
사용자 정의 변수: MySQL에서 아래과 같이 사용자 정의 변수를 선언해 사용할 수 있다.
SET
이외의 명령문에서는=
가 비교연산자로 취급되기 때문에,SELECT
문에서 변수를 선언하고 값을 대입하고 싶다면:=
를 사용해야 한다.set @변수이름 = 대입값; set @변수이름 := 대입값; -- := only select @변수이름 := 대입값;
문제
-
고양이와 개는 몇 마리 있을까
select animal_type, count(animal_type) from animal_ins group by animal_type order by animal_type;
-
최솟값 구하기
select name, count(name) from animal_ins group by name having name is not null and count(name) != 1 order by name;
-
입양 시각 구하기(1)
select hour(datetime) HOUR, count(datetime) COUNT from animal_outs group by hour(datetime) having hour >= 9 and hour <= 19 order by hour;
-
입양 시각 구하기(2)
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;