SQL/Programmers

[SQL/Programmers] GROUP BY(MySQL)

아웃라이어_ 2020. 6. 5. 12:04

https://programmers.co.kr/learn/challenges?tab=sql_practice_kit

 

코딩테스트 연습

기초부터 차근차근, 직접 코드를 작성해 보세요.

programmers.co.kr

문제설명

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다.

ANIMAL_INS 테이블 구조는 다음과 같습니다.

 - ANIMAL_ID(VARCHAR(N), NOT NULL): 동물의 아이디

 - ANIMAL_TYPE(VARCHAR(N), NOT NULL): 생물 종

 - DATETIME(DATETIME, NOT NULL): 보호 시작일

 - INTAKE_CONDITION(VARCHAR(N), NOT NULL): 보호 시작 시 상태

 - NAME(VARCHAR(N)): 이름

 - SEX_UPON_INTAKE(VARCHAR(N), NOT NULL): 성별 및 중성화 여부

 

ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다.

ANIMAL_OUTS 테이블 구조는 다음과 같습니다.

 - ANIMAL_ID(VARCHAR(N), NOT NULL): 동물의 아이디

 - ANIMAL_TYPE(VARCHAR(N), NOT NULL): 생물 종

 - DATETIME(DATETIME, NOT NULL): 보호 시작일

 - NAME(VARCHAR(N)): 이름

 - SEX_UPON_INTAKE(VARCHAR(N), NOT NULL): 성별 및 중성화 여부

 

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

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

이때 고양이가 개보다 먼저 조회해주세요.

 

A. GROUP BY절을 사용하면 같은 값을 가지는 행끼리 그룹으로 묶을 수 있습니다.

 

 

Q. 동명 동물 수 찾기

동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회하는 SQL문을 작성해주세요.

이때 결과는 이름이 없는 동물은 집계에서 제외하며, 결과는 이름 순으로 조회해주세요.

 

 

A. 그룹에 대해 조건을 지정하려면 HAVING 절을 사용해야 합니다.

    IS NOT NULL 조건을 지정하면 NULL이 아닌 값만 사용됩니다.

 

 

 

Q. 입양 시각 구하기(1)

보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다.

09:00부터 19:59까지 , 각 시간대별로 입양이 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요.

이때 결과는 시간대 순으로 정렬해야 합니다.

SQL문을 실행하면 다음과 같이 나와야 합니다.

 

 

A. DATETIME 타임에 HOUR함수를 적용하면 시간을 반환합니다.

BETWEEN 연산자를 사용하면 사이 값을 쉽게 구할 수 있습니다.

 

Q. 입양 시각 구하기(2)

보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다.

0시부터 23시까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요.

이때 결과는 시간대 순으로 정렬해야 합니다.

SQL문을 실행하면 다음과 같이 나와야 합니다.

 

A. 출처: https://www.crocus.co.kr/1591

 

[Programmers] 입양 시각 구하기(2)

문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/59413 알고리즘 분석 : 문제 해결에 필요한 사항 1. SET 2. Subquery SET를 통해 hour라는 변수를 선언해주고, @hour := @hour + 1 AS 'HOUR'을..

www.crocus.co.kr

'SQL > Programmers' 카테고리의 다른 글

[SQL/Programmers] String, Date(MySQL)  (0) 2020.06.05
[SQL/Programmers] JOIN(MySQL)  (0) 2020.06.05
[SQL/Programmers] IS NULL(MySQL)  (0) 2020.06.05
[SQL/Programmers] SUM, MAX, MIN(MySQL)  (0) 2020.06.05
[SQL/Programmers] SELECT(MySQL)  (0) 2020.06.05