https://programmers.co.kr/learn/courses/30/parts/17044

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

# 고양이와 개는 몇 마리 있을까

  • 동물 보호소에 들어온 동물 중 고양이와 개가 각각 몇 마리인지 조회하는 SQL문을 작성해주세요. -> group by
  • 이때 고양이를 개보다 먼저 조회해주세요. -> order by
SELECT ANIMAL_TYPE, count(ANIMAL_TYPE) as 'count'
from ANIMAL_INS
group by ANIMAL_TYPE
order by ANIMAL_TYPE;

 

# 동명 동물 수 찾기

  • 동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회하는 SQL문을 작성해주세요. -> group by
  • 이때 결과는 이름이 없는 동물은 집계에서 제외하며, -> count(name) 
    • count(*)으로 하면 null값 포함
  • 결과는 이름 순으로 조회해주세요. -> order by
SELECT NAME, count(*) as 'count'
from ANIMAL_INS
group by NAME having count(NAME) > 1
order by NAME;

 

# 입양 시각 구하기(1)

  • 보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다.
  • 09:00부터 19:59까지, -> between 9 and 19
  • 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. -> group by 
  • 이때 결과는 시간대 순으로 정렬해야 합니다. -> order by hour
  • Point. hour() 함수 - 시간 추출
SELECT hour(DATETIME) as 'HOUR', count(DATETIME) as 'COUNT' 
from ANIMAL_OUTS
where hour(DATETIME) between 9 and 19
group by HOUR
order by HOUR;

 

# 입양 시각 구하기(2)

  • 보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 0시부터 23시까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.
  • Point. 입양 시각 구하기(1)와 달리 모든 시간대를 조회해야한다 쿼리문에서 로컬 변수를 활용하는 문제
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

+ 참고하기

반응형

+ Recent posts