1. 오늘 배운 것
날짜 추출
예시) 2022년 9월 데이터값
① BETWEEN '2022-09-01' AND '2022-09-30'
② LIKE '2022-09%'
① 의 경우 30일과 31일을 잘못 작성할 경우 조회가 되지 않더라..
② 의 경우 9월 이후의 값을 불러주기 때문에 훨씬 간편!
날짜 차이 구하기
MySQL 에서는 날짜 차이를 구하기 위해 DATEDIFF, TIMESTAMPDIFF 함수를 사용
간단하게 day 의 차이를 구할 때에는 DATEDIFF 함수를 사용
DATEDIFF(날짜1,날짜2)
날짜1 - 날짜2
TIMESTAMPDIFF(단위, 날짜1, 날짜2)
SECOND: 초
MINUTE: 분
HOUR: 시
DAY: 일
WEEK: 주
MONTH: 월
QUARTER: 분기
YEAR: 연
2. 문제풀이
- 동명 동물 수 찾기
동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회하는 SQL문을 작성해주세요. 이때 결과는 이름이 없는 동물은 집계에서 제외하며, 결과는 이름 순으로 조회해주세요.
-- <내가 작성한 쿼리문 1>
SELECT name
FROM animal_ins
WHERE name IS NOT NULL AND name = name
-- <내가 작성한 쿼리문 2>
SELECT *
FROM animal_ins a INNER JOIN animal_ins b ON a.name = b.name
WHERE name IS NOT NULL
-- <정답>
SELECT name NAME, COUNT(name) COUNT
FROM animal_ins
WHERE name IS NOT NULL
GROUP BY name
HAVING COUNT(name) >=2
ORDER BY 1
+
① 동일한 이름을 가진 동물의 수: GROUP BY name
② 그 중 두번 이상: HAVING COUNT(name) >= 2
Q. 동물 보호소에 들어온 생물 종은 각각 몇 마리나 될까?
SELECT animal_type, COUNT(animal_type) count_animal_type
FROM animal_ins
GROUP BY animal_type
A.
Q. 보호 시작 시 어떤 상태로 나누어질까?
SELECT intake_condition
FROM animal_ins
GROUP BY intake_condition
A.
Q. 보호 시작 시 상태가 'sick' 이 2건 이상이었던 동물은 ?
SELECT animal_type, intake_condition
FROM animal_ins
WHERE intake_condition = 'sick'
GROUP BY 1
HAVING COUNT(1) >= 2
A.
GROUP BY 가 아직 익숙해지지 않은 듯 하다
' 그룹 ' 으로 묶어주기 때문에
'~ 별로 나누었을 때'를 잘 인지하고 있어야겠다.
문제를 여러번 풀어보거나 이것저것 시도해보면 좀더 능숙해질꺼라고 생각한다!
일정이 있어 강의는 듣지 못하였으나
코드카타를 하면서 배우게 된 함수도 작성해보았다!
내가 알던 함수보다 훨씬 더 간단하게 실행할 수 있어 너무 재미있다.
'TIL' 카테고리의 다른 글
2024-03-23 (0) | 2024.03.23 |
---|---|
2024-03-22 (1) | 2024.03.22 |
2024-03-20 (0) | 2024.03.20 |
2024-03-19 (0) | 2024.03.19 |
2024-03-18 (0) | 2024.03.18 |