개발일지/SQL

SQL 문법 다지기(8)

프린스 알리 2024. 10. 14.
id
name
major
hire_date
1
르탄이
피부과
2018-05-10
2
배캠이
성형외과
2019-06-15
3
구구이
안과
2020-07-20

 

위와 같이 doctors라는 이름의 테이블이 주어졌을 때, 다음 문제들을 풀어보세요.

문제

  1. doctors 테이블에서 전공(major)가 성형외과인 의사의 이름을 알아내는 쿼리를 작성해주세요!
  2. doctors 테이블에서 각 전공 별 의사 수를 계산하는 쿼리를 작성해주세요!
  3. doctors 테이블에서 현재 날짜 기준으로 5년 이상 근무(hire_date)한 의사 수를 계산하는 쿼리를 작성해주세요!
  4. 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

댓글