2024.11.11 TIL(AI 9기)

SMALL

[TIL]

SQL 

[퀘스트]

8) LOL을 하다가 홧병이 나서 병원을 찾아왔습니다.

#**`doctors`** 테이블에서 전공(major)가 성형외과인 의사의 이름을 알아내는 쿼리를 작성해주세요!
SELECT name
FROM doctors
WHERE major = '성형외과';

#**`doctors`** 테이블에서 각 전공 별 의사 수를 계산하는 쿼리를 작성해주세요!
SELECT major, COUNT(*) AS '전공 별 의사 수'
FROM doctors
GROUP BY major;

#**`doctors`** 테이블에서 현재 날짜 기준으로 5년 이상 근무(hire_date)한 의사 수를 계산하는 쿼리를 작성해주세요!
SELECT COUNT(*) AS '5년 이상 근무자'
FROM doctors
WHERE DATEDIFF(CURDATE(), hire_date) >= 5 * 365;

#**`doctors`** 테이블에서 각 의사의 근무 기간을 계산하는 쿼리를 작성해주세요!
SELECT name, DATEDIFF(CURDATE(), hire_date) AS '근무기간'
FROM doctors;

 

9) 아프면 안됩니다! 항상 건강 챙기세요!

#**`patients`** 테이블에서 각 성별(gender)에 따른 환자 수를 계산하는 쿼리를 작성해주세요!
SELECT gender, COUNT(*)
FROM patients
GROUP BY gender;

#**`patients`** 테이블에서 현재 나이가 40세 이상인 환자들의 수를 계산하는 쿼리를 작성해주세요!
SELECT COUNT(*) 
FROM patients
WHERE YEAR(CURDATE()) - YEAR(birth_date) >= 40;

#**`patients`** 테이블에서 마지막 방문 날짜(last_visit_date)가 1년 이상 된 환자들을 선택하는 쿼리를 작성해주세요!
SELECT *
FROM patients
WHERE DATEDIFF(CURDATE(), last_visit_date) >= 365;

#**`patients`** 테이블에서 생년월일이 1980년대인 환자들의 수를 계산하는 쿼리를 작성해주세요!
SELECT COUNT(*) 
FROM patients
WHERE birth_date 
	BETWEEN '1980-01-01' AND '1989-12-31';

 

DATEDIFF() 함수

용도: 두 날짜 사이의 일 수 차이를 구할 때 사용됩니다.

구문:

DATEDIFF(date1, date2)       #date1 : 첫 번째 날짜, date2 : 두 번째 날짜

 

설명:

  • DATEDIFF(date1, date2)는 date1에서 date2를 뺀 일 수 차이를 반환합니다.
  • 반환값은 양의 정수, 음의 정수, 0일 수 있습니다. 결과 값은 일 수로 표현되며, 날짜 차이를 하루 단위로 반환합니다.
  • date1이 date2보다 나중이면 양수, date2가 date1보다 나중이면 음수가 반환됩니다.

예시:

SELECT DATEDIFF('2024-11-11', '2024-11-01');
#결과: 10 (2024년 11월 11일에서 2024년 11월 1일까지의 일수 차이)

 

 

TIMESTAMPDIFF() 함수

용도: 두 날짜 사이의 특정 단위(년, 월, 일 등) 차이를 구할 때 사용됩니다.

구문:

TIMESTAMPDIFF(unit, date1, date2)
  • unit: 날짜 차이를 구할 때 사용할 단위입니다. 예를 들어, YEAR, MONTH, DAY, HOUR, MINUTE, SECOND 등을 사용할 수 있습니다.
  • date1: 첫 번째 날짜.
  • date2: 두 번째 날짜.
  • 설명:
    • TIMESTAMPDIFF(unit, date1, date2)는 두 날짜 사이의 차이를 특정 단위로 계산한 값을 반환합니다.
    • 반환 값은 단위에 따라 다르며, 연도, 월, 일, 시간, 분, 초 등으로 날짜 차이를 계산할 수 있습니다.
    • 이 함수는 date1이 date2보다 나중일 때 음수 값을 반환하고, 그 반대일 경우 양수 값을 반환합니다.
    unit에 가능한 값:
    • YEAR: 연도 차이
    • MONTH: 월 차이
    • DAY: 일 차이
    • HOUR: 시간 차이
    • MINUTE: 분 차이
    • SECOND: 초 차이

예시:

SELECT TIMESTAMPDIFF(YEAR, '2018-05-10', '2024-11-11');
#결과: 6 (두 날짜 간의 연도 차이는 6년)

SELECT TIMESTAMPDIFF(MONTH, '2018-05-10', '2024-11-11');
#결과: 78 (두 날짜 간의 월 차이는 78개월)

SELECT TIMESTAMPDIFF(DAY, '2024-11-01', '2024-11-11');
#결과: 10 (두 날짜 간의 일 차이는 10일)

SELECT TIMESTAMPDIFF(HOUR, '2024-11-01 10:00:00', '2024-11-11 10:00:00');
#결과: 240 (두 날짜 간의 시간 차이는 240시간)

 

TIMESTAMPDIFF vs DATEDIFF 차이점

  • 단위: DATEDIFF()는 일수만 계산할 수 있는 반면, TIMESTAMPDIFF()는 연도, 월, 일, 시간, 분, 초 등 다양한 단위로 날짜 차이를 계산할 수 있습니다.
  • 출력값: DATEDIFF()는 항상 일 단위로 결과를 반환하는 반면, TIMESTAMPDIFF()는 지정된 단위(예: YEAR, MONTH, DAY 등)로 결과를 반환합니다.
  • 정밀도: TIMESTAMPDIFF()는 정확한 단위 차이를 계산할 수 있지만, DATEDIFF()는 단순히 일 수 차이만 계산합니다.

 

 

LIST

'Today I learned' 카테고리의 다른 글

2024.11.12 TIL(AI 9기)  (0) 2024.11.12
Pythone3 Day 1 출력 문제  (0) 2024.11.12
2024.11.10 TIL(주말)  (0) 2024.11.10
2024.11.08 TIL(AI 9기)  (3) 2024.11.08
본캠프 커리큘럼  (0) 2024.11.08