개발일지/SQL

SQL 문법 다지기(9)

프린스 알리 2024. 10. 14.
id
name
birth_date
gender
last_visit_date
1
르탄이
1985-04-12
남자
2023-03-15
2
배캠이
1990-08-05
여자
2023-03-20
3
구구이
1982-12-02
여자
2023-02-18
4
이션이
1999-03-02
남자
2023-03-17

 

위와 같이 patients 테이블이 주어졌을 때, 다음 문제들을 풀어보세요.

문제

  1. patients 테이블에서 각 성별(gender)에 따른 환자 수를 계산하는 쿼리를 작성해주세요!
  2. patients 테이블에서 현재 나이가 40세 이상인 환자들의 수를 계산하는 쿼리를 작성해주세요!
  3. patients 테이블에서 마지막 방문 날짜(last_visit_date)가 1년 이상 된 환자들을 선택하는 쿼리를 작성해주세요!
  4. patients 테이블에서 생년월일이 1980년대인 환자들의 수를 계산하는 쿼리를 작성해주세요!

문제 풀이

데이터베이스와 테이블 생성하기

CREATE DATABASE step9;
USE step9;
CREATE TABLE patients(
    id INT PRIMARY KEY
    , name VARCHAR(50)
    , birth_date DATE
    , gender VARCHAR(10)
    , last_visit_date DATE
);
INSERT INTO patients
(id, name, birth_date, gender, last_visit_date) 
VALUES
(1, '르탄이', '1985-04-12', '남자', '2023-03-15')
, (2, '배캠이', '1990-08-05', '여자', '2023-03-20')
, (3, '구구이', '1982-12-02', '여자', '2023-02-18')
, (4, '이션이', '1999-03-02', '남자', '2023-03-17')
;

1번

patients 테이블에서 각 성별(gender)에 따른 환자 수를 계산하는 쿼리를 작성해주세요!

 

 

환자 수 계산 COUNT()
→ 성별에 따른 집계함수 연산은 GROUP BY를 이용한다.

 

 

정답 :

SELECT gender
    , COUNT(*) AS "성별에 따른 환자 수"
FROM patients
GROUP BY gender
;

 

 

정답 확인 :

2번

patients 테이블에서 현재 나이가 40세 이상인 환자들의 수를 계산하는 쿼리를 작성해주세요!

 

 

현재 날짜에서 년도를 구하고 birth_date 데이터에서 년도를 구한 뒤 차이를 계산해야 한다. YEAR(date) 함수를 이용해보자.

 

 

현재 나이 = YEAR(CURDATE()) - YEAR(birth_date)

 

 

정답 :

SELECT
    COUNT(*) AS "40세 이상 환자"
FROM patients
WHERE YEAR(CURDATE()) - YEAR(birth_date) >= 40
;

 

 

정답 확인 :

3번

patients 테이블에서 마지막 방문 날짜(last_visit_date)가 1년 이상 된 환자들을 선택하는 쿼리를 작성해주세요!


DATEDIFF(CURDATE(), last_visit_date) >= 365 인 레코드를 선택한다.

 

 

정답 :

SELECT *
FROM patients
WHERE DATEDIFF(CURDATE(), last_visit_date) >= 365
;

 

 

정답 확인 :

4번

patients 테이블에서 생년월일이 1980년대인 환자들의 수를 계산하는 쿼리를 작성해주세요!

 

 

YEAR() 함수를 통해 출생연도를 추출하고
YEAR(birth_date)
해당 값이 BETWEEN 1980 AND 1989인지 확인하자

 

 

정답 :

SELECT 
    COUNT(*) "생년월일이 1980년대인 환자들의 수"
FROM patients
WHERE YEAR(birth_date) BETWEEN 1980 AND 1989
;

 

 

정답 확인 :

 

'개발일지 > SQL' 카테고리의 다른 글

SQL 문법 다지기(11)  (0) 2024.10.14
SQL 문법 다지(10)  (0) 2024.10.14
SQL 문법 다지기(8)  (0) 2024.10.14
SQL 문법 다지기(7)  (0) 2024.10.10
SQL 문법 다지기(6)  (2) 2024.10.10

댓글