특정 값만 제외하고 조회하고 싶을 때
# intake_condition 중 Aged 값들만 제외하고 조회
where intake_condition not in ('Aged')
상위 n개 레코드만 조회하고 싶을 때
# LIMIT 구문은 결과에서 몇 개의 행을 반환할 것인지 제한하는 구문
SELECT a.name
from animal_ins a
order by datetime
limit 1;
(IF) 특정 값 여부가 NULL인 경우, 'N'으로 출력
# CASE WHEN [조건] THEN [True일 때] ELSE [False일 때] END
SELECT a.warehouse_id, a.warehouse_name, a.address,
case when a.freezer_yn is null then 'N' else a.freezer_yn end as freezer_yn
from food_warehouse a
where a.address like '경기도%'
order by a.warehouse_id;
datetime을 원하는 형식으로 출력
# DATE_FORMAT(날짜 , 형식): 날짜를 지정한 형식으로 출력
# as 뒤에는 a. 붙일 필요 없는 것 주의 (에러)
SELECT a.dr_name, a.dr_id, a.mcdp_cd, date_format(a.hire_ymd, '%Y-%m-%d') as hire_ymd
from doctor a
where a.mcdp_cd in ('CS', 'GS')
order by a.hire_ymd desc, a.dr_name asc;

date에서 Year만 비교
# JOINED: 2021-10-05 (date) 에서 year만 뽑아서 비교하고 싶을 때
where Year(JOINED) = 2021;
소수점 반올림
# round(숫자, 소수점 자릿수)
# ex) round(1.12, 1) -> 1.1 / round(1.12, 2) -> 1.12
SELECT round(avg(daily_fee), 0) as average_fee
from car_rental_company_car
where car_type='SUV';
OR 형태를 IN으로 짧게 바꾸기
# 이런 식으로 OR 를 통해 하나씩 비교해줘도 되지만,
select a.id, a.email, a.first_name, a.last_name
from developer_infos a
where a.skill_1 = 'Python' or a.skill_2 = 'Python' or a.skill_3 = 'Python'
order by a.id asc;
# IN을 통해서 한번에 해결 가능
SELECT id, email, first_name, last_name
FROM developer_infos
WHERE 'PYTHON' IN (skill_1, skill_2, skill_3)
ORDER BY id
출력 값에 문자 더해서 출력 (concat)
# concat()을 통해 값인 max(length)와 단위인 'cm'를 합쳐서 출력
select concat(max(length), 'cm') as MAX_LENGTH
from fish_info
ifnull()
# null 값일 때 다른 값으로 대체 해줄 수 있음 (null일 경우 10으로 대체)
select round(avg(ifnull(a.length, 10)), 2) as average_length
from fish_info a;
datediff(date_a, date_b) 날짜 차이 계산
# 날짜 차이가 한 달 이하일 경우 단기 대여, 아니라면 장기 대여를 출력
case when datediff(a.end_date, a.start_date) < 29 then '단기 대여' else '장기 대여' end as rent_type
비트연산자의 사용
# where절에 비트연산자로 조건 주기 가능
where genotype & 2 = 0 and (genotype & 5 >= 1);