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

2024. 9. 4. 17:34·내일배움캠프/사전캠프 강의 (SQL)

id
name
major
hire_date
1
르탄이
피부과
2018-05-10
2
배캠이
성형외과
2019-06-15
3
구구이
안과
2020-07-20

위 테이블은 doctors이다.

 

30. doctors 테이블에서 전공(major)가 성형외과인 의사의 이름을 알아내는 쿼리를 작성해주세요!

SELECT name FROM doctors WHERE major = '성형외과';

 

 

31. doctors 테이블에서 각 전공 별 의사 수를 계산하는 쿼리를 작성해주세요!

SELECT major, COUNT(major) AS doctors_num FROM doctors;
//만약 의사가 여러명 일 경우에는

SELECT major, COUNT(major) AS doctors_num FROM doctors GROUP BY major;

 

 

32. doctors 테이블에서 현재 날짜 기준으로 5년 이상 근무(hire_date)한 의사 수를 계산하는 쿼리를 작성해주세요!

SELECT major, COUNT(hire_date) FROM doctors NOW() - hire_date > LIKE '5%' GROUP BY major;
//AI 확인에 따르면 NOW() - hire_date > LIKE = '5%' 에는 오류가 있다.
//이에 시간 차이를 나타내는 sql함수를 확인 하던중 DATEDIFF를 발견했다.

SELECT major, COUNT(hire_date) FROM doctors DATEDIFF(NOW(), hire_date) > 5*365 GROUP BY major;
//이렇게 DATEDIFF는 시간을 숫자로 INT로 변경시켜 계산을 해주는 방식으로 해결 가능하다.

 

 

33. doctors 테이블에서 각 의사의 근무 기간을 계산하는 쿼리를 작성해주세요!

SELECT id, name, major, DATEDIFF(NOW(), hire_date) AS work_duration FROM doctors;
*/하지만 이렇게 한다면 DATEDIFF는 INT로 바꿔버리기 때문에 ~년 ~개월 일을 했다 가 아닌
~일 일했다 라고 뜬다. 하지만 ~년 ~개월 로 표현하기는 어떻게 해야할지 모르겠다/*


AI
SELECT id, name, major, TIMESTAMPDIFF(YEAR, hire_date, NOW()) AS years,
TIMESTAMPDIFF(MONTH, hire_date, NOW()) % 12 AS months,
TIMESTAMPDIFF(DAY, hire_date, NOW()) % 365 AS days FROM doctors;
//이렇게 TIMESTAMPDTIFF를 사용하여(YEAR, MONTH, DAY)등을 사용하여 계산 할수 있어 보인다.
//디폴트는 YEAR로 보이며 MONTH 는 %12를 DAY는 % 365를 하면되는거 같다.
//하지만 이렇게 하게 되면 year, months, days가 각각 하나의 데이터 행을 가지게 되므로.

SELECT id, name, major, CONCAT(TIMESTAMPDIFF(YEAR, hire_date, NOW()), 'year', 
TIMESTAMPDIFF(MONTH, hire_date, NOW()) % 12, 'months',
TIMESTAMPDIFF(DAY, hire_date, NOW()) % 365, 'days') AS duration FROM doctors;
//이렇게 표현 할 수 있다. CONCAT은 문자열을 합을 나타낸다.

'내일배움캠프 > 사전캠프 강의 (SQL)' 카테고리의 다른 글

10) 이젠 테이블이 2개입니다.  (4) 2024.09.04
9) 아프면 안됩니다! 항상 건강 챙기세요!  (1) 2024.09.04
7) 랭크게임 하다가 싸워서 피드백 남겼어요..  (2) 2024.09.04
6) 팀 프로젝트 열심히 했으니 다시 놀아 볼까요?  (0) 2024.09.04
5) 공부하다보니 팀 프로젝트 시간이 왓어요!  (0) 2024.09.03
'내일배움캠프/사전캠프 강의 (SQL)' 카테고리의 다른 글
  • 10) 이젠 테이블이 2개입니다.
  • 9) 아프면 안됩니다! 항상 건강 챙기세요!
  • 7) 랭크게임 하다가 싸워서 피드백 남겼어요..
  • 6) 팀 프로젝트 열심히 했으니 다시 놀아 볼까요?
코드 유랑자 승열
코드 유랑자 승열
코드 유랑자 승열의 프로그래밍 일지를 남기는 공간입니다.
  • 코드 유랑자 승열
    승열의 프로그래밍 시네마
    코드 유랑자 승열
  • 전체
    오늘
    어제
  • 링크

    • 깃허브 보러가기
    • 링크드인 보러가기
    • 인스타그램 보러가기
    • 카테고리
      • 코딩테스트
        • BaekJoon
      • TIL and WIL
        • TIL
        • WIL
      • 주말스터디
      • 내일배움캠프
        • 사전캠프 강의 (SQL)
      • 용어정리
        • Python
        • Python-Library
        • Machine-Learning
        • Deep-Learning
        • AI 활용
        • LLM & RAG
        • Docker
        • Django
        • SQL
        • Java Script
        • etc
      • Daily 코드카타
        • SQL
        • Python 알고리즘
      • 임시저장
      • 보류
  • 태그

    티스토리챌린지
    template
    llm
    word2vec
    RAG
    오블완
    View
    vector db
    django
    langchain
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
코드 유랑자 승열
8) LOL을 하다가 홧병이 나서 병원을 찾아왔습니다.
상단으로

티스토리툴바