TIL

2024-03-21

여연찌 2024. 3. 21. 23:01

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