MySQL 프로그래머스 - Level 2


문제 링크

1. 최솟값 구하기


SELECT datetime as '시간' from animal_ins order by datetime limit 1;


2. 동물 수 구하기


SELECT count(*) from animal_ins;


3. 중복 제거하기


SELECT count(distinct name) as 'count' from animal_ins;

집계함수 count(열이름)에서 특별히 따로 group by를 같은 조건이 없다면 해당 열의 값이 null인 경우 카운트하지 않아 null 자체가 조회 행에 없다.
distinct로 중복되는 것을 하나로 처리

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


SELECT animal_type, count(*) as count from animal_ins group by animal_type order by animal_type;

group by로 묶었으므로 count도 자동으로 animal_type으로 묶여서 카운트 된다.

5. NULL 처리하기


-- 방법 1
-- 첫파라미터가 널이면 2번 파라미터 출력, 첫파라미터가 널이 아니면 첫 파라미터 출력
SELECT animal_type, ifnull(name,'No name') as name, sex_upon_intake from animal_ins;

-- 방법 2
SELECT animal_type, if(name is null,'No name',name) as name, sex_upon_intake from animal_ins;

id가 pk라 알아서 id순 정렬된다.

6. 동명 동물 수 찾기


SELECT name, count(*) as count from animal_ins 
where name is not null 
group by name 
having count(name)>1
order by name;
  • where 절에는 집계함수 사용 불가 -> group by 뒤에 having 문 사용
  • 집계함수 : avg, min, max, count, stdev, var_samp


7. 입양 시각 구하기1


select hour(datetime) hour, count(*) count
from animal_outs 
where 9<=hour(datetime) and hour(datetime)<=19
group by hour
order by hour
  • hour은 집계함수고 그냥 내장 함수다. -> where 조건으로 사용 가능
  • group by로 묶인 순간부터 count는 묶인 행을 기준으로 카운트한다.
  • select 문의 별칭은 order by, group by, having에서만 사용 가능하다.


8. 루시와 엘라 찾기


SELECT animal_id,name,sex_upon_intake 
from animal_ins
where name in ('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty');


9. 이름에 el이 들어가는 동물 찾기


SELECT animal_id,name 
from animal_ins
where name like '%el%' and animal_type ='dog'
order by name;


10. 중성화 여부 파악하기


-- if 문
SELECT animal_id,name,
if (sex_upon_intake like '%Neutered%' or sex_upon_intake like '%Spayed%','O','X') '중성화'
from animal_ins;

-- case 문
SELECT animal_id,name,
case   
    when SEX_UPON_INTAKE like '%Neutered%' then 'O'
    when SEX_UPON_INTAKE like '%Spayed%' then 'O'
    else 'X'
end '중성화'
from animal_ins;


11. DATETIME에서 DATE로 형 변환


SELECT animal_id,name,date_format(datetime,'%Y-%m-%d') '날짜'
from animal_ins;
  • date_format 형식
    • %Y(4자리 연도) ex) 2014
    • %y(2자리 연도) ex) 2014 -> 14
    • %M(영어로) ex) 9월 -> September
    • %m(2자리 월) ex) 9월 -> 09
    • %D(th) ex) 2일 -> 2nd
    • %d(2자리 일) ex) 2일 -> 02
    • %H(24시간)
    • %h(12시간)
    • %i(2자리 분) 대문자 I는 %h와 동일
    • %s(초) 대소문자 무관


10번 11번 다시 풀어볼 필요가 있다.


© 2021. By Backtony