Sparta/CODEKATA

[250814] 스파르타코딩 본캠프 9일차 (2)

junecho 2025. 8. 14. 21:03

💥  CODEKATA                                                                                                           

기억에 남는 문제들만 기재

 

 

 

19) 흉부외과 또는 일반외과 의사 목록 출력하기

# 내코드 
# 오답. 실행 안됨
# 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으로 오름차순 정렬

 

 

 


23) 중성화 여부 파악하기

### 내코드
### 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 정처기 때 외웠던 개념이 나와서 반가움