루시와 엘라 찾기
SELECT ANIMAL_ID
,NAME
,SEX_UPON_INTAKE
FROM ANIMAL_INS
WHERE NAME IN ('Lucy','Ella','Pickle','Rogan','Sabrina','Mitty')
ORDER BY ANIMAL_ID;
SQL
복사
이름에 el이 들어가는 동물 찾기
•
대소문자 구분 없이 검색하는 방법
◦
lower()
◦
upper()
SELECT ANIMAL_ID
,NAME
FROM ANIMAL_INS
WHERE LOWER(NAME) LIKE '%el%'
AND ANIMAL_TYPE = 'Dog'
ORDER BY NAME;
SQL
복사
중성화 여부 파악하기
•
CASE WHEN
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
ORDER BY ANIMAL_ID;
SQL
복사
•
IF
SELECT ANIMAL_ID
,NAME
,IF(SEX_UPON_INTAKE LIKE '%Neutered%' OR SEX_UPON_INTAKE LIKE '%Spayed%','O','X') AS 중성화
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;
SQL
복사
DATETIME 에서 DATE로 형 변환
SELECT ANIMAL_ID
,NAME
,DATE_FORMAT(DATETIME,'%Y-%m-%d') AS 날짜
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;
SQL
복사
카테고리 별 상품 개수 구하기
•
INSTR(’문자열’,’추출문자’) : 해당 문자열에서 index를 추출
ex) SELECT INSTR(’안녕하세요’,’하세요’);
→ 3
•
SUBSTR(’문자열’,위치) : 해당 문자열의 위치부터 추출
ex) SELECT SUBSTR(’반갑습니다’,3);
→ 습니다
•
SUBSTRING(’문자열’,위치,길이) : 해당 문자열의 위치부터 길이까지 추출
ex) SELECT SUBSTRING(’공부합시다’,3,2);
→ 합시
SELECT SUBSTRING(PRODUCT_CODE,1,2) AS CATEGORY
,COUNT(DISTINCT PRODUCT_ID) AS PRODUCTS
FROM PRODUCT
GROUP BY SUBSTRING(PRODUCT_CODE,1,2)
ORDER BY CATEGORY;
SQL
복사
조건별로 분류하여 주문상태 출력하기
SELECT ORDER_ID
,PRODUCT_ID
,DATE_FORMAT(OUT_DATE,'%Y-%m-%d') AS OUT_DATE
,CASE WHEN OUT_DATE <= '2022-05-01' THEN '출고완료'
WHEN OUT_DATE > '2022-05-01' THEN '출고대기'
ELSE '출고미정' END AS 출고여부
FROM FOOD_ORDER
ORDER BY ORDER_ID;
SQL
복사
오랜 기간 보호한 동물(2)
•
DATEDIFF : 일 차이만 가져온다.
ex) DATEDIFF(날짜1,날짜2);
→ 날짜1 - 날짜2
•
TIMESTAMPDIFF : 차이를 연, 분기, 월, 주, 일, 시, 분, 초를 지정하여 가져올 때 사용한다.
ex) TIMESTAMPDIFF(단위, 날짜1, 날짜2);
- 단위 -
•
SECOND : 초
•
MINUTE : 분
•
HOUR : 시
•
WEEK : 주
•
MONTH : 월
•
QUARTER : 분기
•
YEAR : 연
SELECT A.ANIMAL_ID
,A.NAME
FROM ANIMAL_INS A
INNER JOIN ANIMAL_OUTS B ON A.ANIMAL_ID = B.ANIMAL_ID
ORDER BY DATEDIFF(B.DATETIME,A.DATETIME) DESC
LIMIT 2;
SQL
복사
취소되지 않은 진료 예약 조회하기
SELECT APNT_NO
,B.PT_NAME
,A.PT_NO
,A.MCDP_CD
,C.DR_NAME
,APNT_YMD
FROM APPOINTMENT A
INNER JOIN PATIENT B ON A.PT_NO = B.PT_NO
INNER JOIN DOCTOR C ON A.MDDR_ID = C.DR_ID
WHERE DATE_FORMAT(APNT_YMD,'%Y-%m-%d') = '2022-04-13'
AND A.MCDP_CD = 'CS' AND APNT_CNCL_YN = 'N'
ORDER BY APNT_YMD;
SQL
복사