💥 CODEKATA
기억에 남는 문제들만 기재
# 내코드
# 오답. 실행 안됨
# order by 에서 case when을 사용하여 hire_ymd가 중복인 경우에 이름순으로 나열하려고 했는데,
# 저렇게 쓰는게 아니었음
SELECT dr_name, dr_id, mcdp_cd, substr(hire_ymd, 1, 10) as hire_ymd
from doctor
where MCDP_CD = 'CS' or MCDP_CD = 'GS'
order by case
when count(hire_ymd) > 1 then dr_name asc
else hire_desc desc
# 1차 수정된 코드
# order by 에서 카운트로 case when을 사용하려면, 서브쿼리를 썼어야 했다.
SELECT dr_name, dr_id, mcdp_cd, substr(hire_ymd, 1, 10) as hire_ymd
from doctor
where MCDP_CD in ('CS', 'GS')
order by
case
when hire_ymd in (
select hire_ymd
from doctor
group by hire_ymd
having count(1) > 1
) then dr_name
else null
end asc,
hire_ymd desc
# 2차 수정된 코드
# 굳이 case when 사용하지 않아도 order by 에서 두 줄이면 끝났음
SELECT dr_name, dr_id, mcdp_cd, substr(hire_ymd, 1, 10) as hire_ymd
from doctor
where MCDP_CD in ('CS', 'GS')
order by
hire_ymd desc, -- 우선 hire_ymd로 내림차순 정렬
dr_name asc -- 같은 hire_ymd 내에서는 dr_name으로 오름차순 정렬
### 내코드
### in을 쓰건 like 를 쓰건 중성화 컬럼이 답이 아니었음
SELECT animal_id, name,
if(sex_upon_intake in ('%Neutered%', '%Spayed%'), 'O', 'X') as '중성화'
from animal_ins
order by animal_id
### 맞는 문법 if, like 사용
SELECT animal_id, name,
if(sex_upon_intake like '%Neutered%' or sex_upon_intake like '%Spayed%', 'O', 'X') as '중성화'
from animal_ins
order by animal_id
### case when 사용
SELECT animal_id, name,
case
when sex_upon_intake like '%Neutered%' or sex_upon_intake like '%Spayed%' then 'O'
else 'X'
end as '중성화'
from animal_ins
order by animal_id
아티클
더보기
[선정 아티클]
https://yozm.wishket.com/magazine/detail/1096/
[주제] 관계형 데이터베이스 형식의 중요성
[요약]
- 양질의 데이터를 판별하는 방법 중 하나로 '관계형 데이터베이스' 형식을 갖추고 있는가
- 관계형 데이터베이스 - 데이터를 테이블 형태로 저장, '키(Key)'를 통해 데이터 간의 관계를 맺음
- 키의 필수 조건 - 유일성, 무결성
[주요 포인트]
- 관계형 데이터베이스의 중요성 : 데이터를 분석하기 좋게 만들고, 다른 데이터와의 결합을 용이하게 하여 데이터의 활용 가치를 높이는 기본 형식
- 테이블의 조건 : 보유한 데이터가 진정한 의미의 테이블로 불리기 위해서는 모든 데이터에 '키(Key)'가 존재해야함
- 키의 필수성 : 데이터에서 키는 각 데이터를 정확히 식별할 수 있는 식별자로, 키가 없으면 데이터의 의미를 파악하거나 다른 테이블과 결합할 수 없음
- 키의 조건 : 키는 하나의 식별 값을 정확히 식별할 수 있는 '유일성'과, 키 값이 비어 있거나 중복되지 않아야 하는 '무결성'을 반드시 만족해야함
- 형식의 중요성 : 아무리 빅데이터가 다양한 형태를 띠더라도, 분석을 위한 기본적인 데이터 형식(관계형 데이터베이스 형식)을 지키지 않으면 데이터 활용에 한계가 존재
[핵심 개념]
- 관계형 데이터베이스 : 데이터를 행(Row)과 열(Column)의 테이블 형태로 저장하고, 서로 관계있는 데이터를 관리하는 데이터베이스 모델
- 키 (Key) : 데이터의 속성(열) 중 식별자로 이용 가능한 속성으로, 하나의 키만 보더라도 특정 데이터를 정확히 식별할 수 있게 해줌
- 유일성 (Uniqueness) : 하나의 키가 하나의 식별 값을 정확히 식별할 수 있어야 함
- 무결성 (Integrity) : 데이터에서 키 값이 비어 있거나 중복되지 않아야 함
[인사이트]
- 데이터의 형식이 다르다면 DBeaver 같은 기본 프로그램에서조차도 불러오지 못할테니 매우 중요하고도 기본중의 기본이라고 생각함. tmi 정처기 때 외웠던 개념이 나와서 반가움
'Sparta > CODEKATA' 카테고리의 다른 글
| [250819] 스파르타코딩 본캠프 11일차 (2) (0) | 2025.08.19 |
|---|---|
| [250818] 스파르타코딩 본캠프 10일차 (2) (4) | 2025.08.18 |
| [250813] 스파르타코딩 본캠프 8일차 (4) | 2025.08.13 |
| [250811] 스파르타코딩 본캠프 6일차 - 사전캠프 퀘스트 SQL 달리기반 (6) | 2025.08.11 |
| [250807] 스파르타코딩 본캠프 4일차 - 사전캠프 퀘스트 SQL 걷기반 (4) | 2025.08.07 |