https://school.programmers.co.kr/learn/challenges
SELECT ANIMAL_TYPE,
count(ANIMAL_ID) as count
from ANIMAL_INS
group by ANIMAL_TYPE
order by ANIMAL_TYPE
SELECT ANIMAL_ID,
NAME,
SEX_UPON_INTAKE
FROM ANIMAL_INS
WHERE NAME IN ( 'Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty')
SELECT DATETIME AS 시간
FROM ANIMAL_INS
ORDER BY DATETIME
LIMIT 1
SELECT NAME, COUNT(*) AS COUNT
FROM ANIMAL_INS
GROUP BY NAME
HAVING COUNT(*)>=2
AND NAME IS NOT NULL
ORDER BY NAME;
SELECT hour(datetime) as hour,
count(hour(datetime)) as count
from animal_outs
where hour(datetime) between 9 and 19
group by hour(datetime)
order by hour(datetime)
https://school.programmers.co.kr/learn/courses/30/lessons/59413#qna
0~23시의 입양건수를 구해야 하는데 테이블에는 7~19시의 데이터만 들어있다.
즉 비어있는 시간대의 칼럼과 데이터를 만들어 넣어야 한다는 것.
모르겠는데....??
like절 : 부분적으로 일치하는 칼럼을 찾을 때 사용한다.
_ : 글자수를 정해줌
% : 글자수를 정해주지 않음
SELECT animal_id,
name
from ANIMAL_INS
where lower(name) like '%el%'
and animal_type = 'dog'
order by name;
SELECT animal_type,
case when name is null
then 'No name'
else name
end name,
sex_upon_intake
from animal_ins
SELECT animal_type,
ifnull(name, 'No name') as name,
sex_upon_intake
from animal_ins
SELECT animal_id,
name,
case
when sex_upon_intake like '%Neutered%' then 'O'
when sex_upon_intake like '%Spayed%' then 'O'
else 'X' end as '중성화'
from animal_ins
난 조건문을 활용해 노가다로 코드를 작성했지만 더 다양한 방법이 있었다.
SELECT animal_id,
name,
case when
sex_upon_intake like '%Neutered%' or
sex_upon_intake like '%Spayed%' then 'O'
else 'X' end as '중성화'
from animal_ins
SELECT animal_id,
name,
if(sex_upon_intake like '%Intact%', 'X', 'O') as '중성화'
from animal_ins
insrt() : 문자열(string)에서 지정된 문자열을 검색해 그 위치를 리턴하는 함수.
SELECT animal_id,
name,
if(instr(sex_upon_intake, 'intact'), 'X', 'O') as '중성화'
from animal_ins
decode함수 : SQL표준함수는 아니지만 아주 편하며 Case When구문과 동일하다.
예) DECODE(컬럼, 조건1, 결과1, 조건2, 결과2, ....)
substr함수 : 지정된 위치에서 특정 길이만큼 문자열을 자른다.
substr('Animal',2) -> nimal
SELECT count( distinct name) as count
from animal_ins
where name is not null
to_char() : 날짜, 숫자 등의 값을 문자열로 변환하는 함수
date_format(date, format) : 날짜 포맷 변경 함수
to_char(datetime,'YYYY-MM-DD')
date_format(datetime,'%Y-%m-%d')