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 테이블이 주어졌을 때, 다음 문제들을 풀어보세요.
문제
patients
테이블에서 각 성별(gender)에 따른 환자 수를 계산하는 쿼리를 작성해주세요!patients
테이블에서 현재 나이가 40세 이상인 환자들의 수를 계산하는 쿼리를 작성해주세요!patients
테이블에서 마지막 방문 날짜(last_visit_date)가 1년 이상 된 환자들을 선택하는 쿼리를 작성해주세요!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 |
댓글