목록문제/프로그래머스_sql (24)
sm 기술 블로그
SELECT ANIMAL_TYPE, case when NAME is null then "No name" else NAME end as "name", SEX_UPON_INTAKE from ANIMAL_INS order by ANIMAL_ID; 기본 구조 CASE WHEN 조건 THEN '반환 값' WHEN 조건 THEN '반환 값' ELSE 'WHEN 조건에 해당 안되는 경우 반환 값' END 스위치와 같은 동작이라고 생각하면 된다. 조건에 따라 컬럼 내에 값을 다르게 표현해준다.
SELECT ANIMAL_ID from ANIMAL_INS where name is NULL is NULL : null이다 라는 뜻이다. 즉 이름이 null경우 ID를 뽑는 구문이다.
문제 : 보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 09:00부터 19:59까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다. SELECT A.HOUR, COUNT(*) FROM (SELECT substr(DATETIME, 11, 3) AS HOUR FROM ANIMAL_OUTS ) A WHERE A.HOUR BETWEEN 9 AND 19 GROUP BY HOUR ORDER BY HOUR 1. SUBSTR : 문자열을 자를 때 사용한다. 기본 형태 SELECT substr(컬럼, 시작위치, 시작위치 부터 자르는 길이) FROM TABLE 따라서 11 , 3을 쓰면 11부터 3칸을 자르겠다라는 소리이다..
문제 : 동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회하는 SQL문을 작성해주세요. 이때 결과는 이름이 없는 동물은 집계에서 제외하며, 결과는 이름 순으로 조회해주세요. SELECT * FROM (SELECT NAME, COUNT(NAME) AS COUNT FROM ANIMAL_INS GROUP BY NAME) A WHERE A.COUNT > 1 ORDER BY NAME; 1. 서브쿼리에서 GROUP BY 를 통해 이름과 이름이 쓰인 횟수를 뽑는다. 2. COUNT가 1보다 큰 녀석만 뽑아서 이름 기준으로 정렬한다.