id
|
name
|
major
|
hire_date
|
1
|
르탄이
|
피부과
|
2018-05-10
|
2
|
배캠이
|
성형외과
|
2019-06-15
|
3
|
구구이
|
안과
|
2020-07-20
|
위와 같이 doctors
라는 이름의 테이블이 주어졌을 때, 다음 문제들을 풀어보세요.
문제
doctors
테이블에서 전공(major)가 성형외과인 의사의 이름을 알아내는 쿼리를 작성해주세요!doctors
테이블에서 각 전공 별 의사 수를 계산하는 쿼리를 작성해주세요!doctors
테이블에서 현재 날짜 기준으로 5년 이상 근무(hire_date)한 의사 수를 계산하는 쿼리를 작성해주세요!doctors
테이블에서 각 의사의 근무 기간을 계산하는 쿼리를 작성해주세요!
문제 풀이
데이터베이스와 테이블 생성하기
CREATE DATABASE step8;
USE step8;
CREATE TABLE doctors(
id INT PRIMARY KEY
, name VARCHAR(50)
, major VARCHAR(50)
, hire_date DATE
);
INSERT INTO doctors
(id, name, major, hire_date)
VALUES
(1, '르탄이', '피부과', '2018-05-10')
, (2, '배캠이', '성형외과', '2019-06-15')
, (3, '구구이', '안과', '2020-07-20')
;
1번
doctors
테이블에서 전공(major)가 성형외과인 의사의 이름을 알아내는 쿼리를 작성해주세요!
정답 :
SELECT name AS "성형외과 의사"
FROM doctors
WHERE major = '성형외과'
;
정답 확인 :
2번
doctors
테이블에서 각 전공 별 의사 수를 계산하는 쿼리를 작성해주세요!
major 열과 의사 수를 COUNT
한 열을 함께 선택하여 출력한다.
정답 :
SELECT major
, COUNT(*) AS "전공별 의사 수"
FROM doctors
GROUP BY major
;
정답 확인 :
3번
doctors
테이블에서 현재 날짜 기준으로 5년 이상 근무(hire_date)한 의사 수를 계산하는 쿼리를 작성해주세요!
현재 날짜는 CURDATE()로 구할 수 있다.
→ 두 날짜 간의 차이는 DATEDIFF()
함수를 통해 구할 수 있다.
→ DATEDIFF(CURDATE(), hire_date) ≥ 365 * 5 + 1
의 조건을 만족하는 테이블을 불러낸다.(2020년 = 366일, 윤년.)
→ 의사의 수는 COUNT()
함수로 계산하면 끝
정답 :
SELECT
COUNT(*) AS "5년 이상 근무한 의사 수"
FROM doctors
WHERE DATEDIFF(CURDATE(), hire_date) >= 365 * 5 + 1
;
정답 확인 :
4번
doctors
테이블에서 각 의사의 근무 기간을 계산하는 쿼리를 작성해주세요!
근무 기간은 3번 처럼 DATEDIFF(CURDATE(), hire_date)
로 계산할 수 있다.
→ 기존 테이블에 근무 기간 계산 필드를 함께 출력하면 끝
정답 :
SELECT *
, DATEDIFF(CURDATE(), hire_date) AS "근무 기간(일)"
FROM doctors
;
정답 확인 :
'개발일지 > SQL' 카테고리의 다른 글
SQL 문법 다지(10) (0) | 2024.10.14 |
---|---|
SQL 문법 다지기(9) (0) | 2024.10.14 |
SQL 문법 다지기(7) (0) | 2024.10.10 |
SQL 문법 다지기(6) (2) | 2024.10.10 |
SQL 문법 다지기(5) (4) | 2024.10.07 |
댓글