TIL

231226화_TIL

30303 2023. 12. 26. 21:21
728x90

SQL 코드카타

문제 27.

문제

APPOINTMENT 테이블에서 2022년 5월에 예약한 환자 수를 진료과코드 별로 조회하는 SQL문을 작성해주세요. 이때, 컬럼명은 '진료과 코드', '5월예약건수'로 지정해주시고 결과는 진료과별 예약한 환자 수를 기준으로 오름차순 정렬하고, 예약한 환자 수가 같다면 진료과 코드를 기준으로 오름차순 정렬해주세요.

 

 

 

SELECT mcdp_cd as '진료과 코드', count(1) as '5월예약건수'
from appointment
group by mcdp_cd
order by count(1), mcdp_cd

 

조건: 2022년 5월

SELECT mcdp_cd as '진료과 코드', count(1) as '5월예약건수'
from appointment
where apnt_ymd like '%2022-05%'
group by mcdp_cd
order by count(1), mcdp_cd

꼼꼼히 봐야지 했는데 놓친 것.. 조건. 조건이 있는지 꼭 확인하기

 

 

 

문제 28.

 

 

문제

PATIENT 테이블에서 12세 이하인 여자환자의 환자이름, 환자번호, 성별코드, 나이, 전화번호를 조회하는 SQL문을 작성해주세요. 이때 전화번호가 없는 경우, 'NONE'으로 출력시켜 주시고 결과는 나이를 기준으로 내림차순 정렬하고, 나이 같다면 환자이름을 기준으로 오름차순 정렬해주세요.

 

SELECT pt_no, gend_cd, age, 
case when tlno=null, then 'none'
else tlno end
from patient
where age<=12, gend_cd='W'
order by age desc, pt_name

1) 맨 앞 환자 이름 누락

2) case when tlno=null로는 구현이 안 됨

3) 제시한 "NONE" 그대로 대문자로 작성해야 함

SELECT pt_name, pt_no, gend_cd, age, 
case when tlno is null then "NONE"
else tlno end as 'tlno'
from patient
where age<=12 and gend_cd='w'
order by age desc, pt_name

 

 

+) 추가 방법 

IFNULL(Column명, "Null일 경우 대체 값")

ifnull(tlno,'NONE')

 

 

SELECT COALESCE(Column명, Column명이 NULL인 경우 대체할 값)

coalesce(tlno, 'NONE')

 

 

 

 

 


SQLD 자격증 대비반 강의

 

3주차

 

*entity 엔티티

= 하나의 개체 = 업무에서 필요한 정보로 구성 = 데이터 중복 X = 인스턴스의 집합 (2개이상의 인스턴스로 구성) 

*인스턴스

= 각각의 데이터 

 

*속성

* 함수적 종속성

X(결정자)가 Y(종속자)에 영향을 미침. X를 알면 Y를 알 수 있고, X가 바뀌면 Y 또한 바뀐다. => Y는 X의 함수적 종속성이 있다.

 

*pk(primary key) : 각각 엔티티의 식별 번호. 주식별자로 사용되는 속성

*fk(foreign key) : 다른 엔티티와의 관계에 포함된 속성

 

*도메인 :  각 속성이 가질 수 있는 값의 범위

 

*관계

1:1 / 1:m / m:n

 

=> 부서는 0,1,다수의 사원을 가질 수. 사원은 하나의 부서를 가질 수.

=> 점선: 0 또는 n개. 부서는 사원을 선택적으로 가질 수 있다.

=> 실선: 필수로 반드시 가져야 한다. 

 

4주차

성능 데이터 모델링 => 시점: 프로젝트 수행 이전

정규화/반정규화

 

5주차

 

대량 데이터.

수직분할 ex. 도서 테이블

수평 분할 ex. 통신요금 테이블

목록분할 ex. 고객 주소별

해시분할 : 알고리즘 규칙

 

* 슈퍼타입/서브타입

* 분산데이터 (논리적 동일, 물리적 분산)

 


sql 강의 복습

 

1주차

 

컬럼명 변경

 

1)컬럼 1 as 변경명

2)컬럼1 변경명

 

* 별명 유의사항

영문, 언더바 특수문자, 한글
별명만 작성 큰 따옴표(" ")사용

 

where 절 사용법

숫자 문자
값만 작성 작은 따옴표(' ')사용
#예시
where age =21 and gender='male'

 

 

비교 연산자

비교연산자 의미
= 같다
<> 같지 않다(다르다)
> 크다
>= 크거나 같다
< 작다
<= 작거나 같다

 

between a와 b 사이 where age between 21 and 23
in 포함하는 조건 where age in (21, 25, 27)
where name in ('윤주아', '정현준')
like 비슷한 값 where name like
'김%' =김으로 시작하는
'%김%' = 김을 포함하는
'%김' = 김으로 끝나는

 

논리연산

 

AND 그리고 age >20 and gender='female'
OR 또는 age>20 or gender='female'
NOT 아닌 not gender ='female'
여성이 아닌

 

 

복습) 처음 학습할 때 내용을 이해하고 습득하느라 흘러 지나간 세세한 내용들이 눈에 들어온다. 코드카타를 진행하며 에러가 났던 것들. 기호 등의 문제. 정리하며 훑으면 되겠다.