티스토리 뷰

Algorithm

프로그래머스 - SQL : GROUP BY (MySQL)

ellie.strong 2021. 2. 25. 21:59
728x90

<목차>

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

    코딩테스트 연습 - 고양이와 개는 몇 마리 있을까 | 프로그래머스 (programmers.co.kr)

     

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

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

    programmers.co.kr

    동물 보호소에 들어온 동물 중 고양이와 개가 각각 몇 마리인지 조회하는 SQL문을 작성해주세요. 이때 고양이를 개보다 먼저 조회해주세요.

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

     

    동명 동물 수 찾기

    코딩테스트 연습 - 동명 동물 수 찾기 | 프로그래머스 (programmers.co.kr)

     

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

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

    programmers.co.kr

    동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회하는 SQL문을 작성해주세요. 이때 결과는 이름이 없는 동물은 집계에서 제외하며, 결과는 이름 순으로 조회해주세요.

    SELECT NAME, COUNT(*) COUNT
    FROM ANIMAL_INS
    WHERE NAME IS NOT NULL
    GROUP BY NAME
    HAVING COUNT(*) > 1
    ORDER BY NAME

     

    입양 시각 구하기(1)

    코딩테스트 연습 - 입양 시각 구하기(1) | 프로그래머스 (programmers.co.kr)

     

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

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

    programmers.co.kr

    보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 09:00부터 19:59까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.

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

    날짜관련 함수

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

     

    입양 시각 구하기(2)

    코딩테스트 연습 - 입양 시각 구하기(2) | 프로그래머스 (programmers.co.kr)

     

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

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

    programmers.co.kr

    보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 0시부터 23시까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.

    0시부터 23시까지 입양이 발생하지 않은 시간대에 대해서도 결과를 보여줘야한다. -> 변수 필요!!

    SET @hour := -1; -- 변수 선언
    
    SELECT 
        (@hour := @hour + 1) HOUR,
        (SELECT COUNT(*) FROM ANIMAL_OUTS WHERE HOUR(DATETIME) = @hour) COUNT
    FROM ANIMAL_OUTS
    WHERE @hour < 23

    MySQL에서 변수 선언하기

    SET @변수명 := 값;

    SET 옆에 변수명과 초기값을 설정할 수 있다. 

    @가 붙은 변수는 프로시저가 종료되어도 유지된다. -> 값 누적 가능

     

    MySQL에서 SET을 제외한 다른 쿼리문에서는 '='를 비교연산자(comparison operator)로 인식하기 때문에 SET이 아닌 다른 쿼리문에서는 반드시 대입 연산자(assignment operator) ':='를 사용해야한다. 

    -> SET @변수명 = 값; 가능!!

     

     

     

    728x90
    댓글
    공지사항
    최근에 올라온 글