Input/SQL

SQL 연산자 & 함수 _ 프로그래머스 코딩 테스트 & 네이버 부스트 코스, 23/06/26~27

buji-learn 2023. 6. 27. 15:00

프로그래머스 : 12세 이하인 여자 환자 목록 출력하기

 전화번호가 Null이면 'NONE'으로 출력한다는 조건을 어떻게 처리해야할 지 몰라 다른 사람들의 풀이를 보았다. 풀이가 다양한 게 흥미로웠다. 목적지까지 가는 방법이 하나가 아니다. 맞아, 그래서 내가 프로그래밍을 좋아했지. 

select *
-- 전화번호가 NULL이면 'NONE'으로 출력
/* 1) 
    case 
        when tlno is null then 'none'
        else tlno
    end as tlno
*/
/* 2)
    IF(TLNO IS NULL, 'NONE', TLNO) AS TLNO 
*/
    from PATIENT
    where GEND_CD = 'W' and 
          AGE <= 12
    order by AGE desc, PT_NAME asc;

 

IS NULL 처리하기

 문제 이름부터 null 값을 처리하는 거라 위 문제에서 알아낸 방법 중 하나로 풀었다. C++과 파이썬 때문인지 case when 보다 if 함수가 익숙하다.

select ANIMAL_TYPE, if(NAME is null, 'No name', NAME) as NAME, SEX_UPON_INTAKE
    from ANIMAL_INS
    order by ANIMAL_ID;

 

네이버 부스트코스 SQL 4-1) 연산자

 드디어 4챕터, 연산자와 함수를 다뤘다.

/* 
    비교 연산자
    =, <>, >, <, >=, <=
*/

/*
    논리 연산자
    AND, NOT, OR
*/

/*
    특수 연산자
    between A and B : 사잇값 (등호 포함))
    not between A and B : 사이값 아닌 것 (등호 미포함
    in (리스트)
*/

/*
    LIKE 비교문자열
    like 'D%' : D로 시작
    like '%N' : N로 끝
    like '%EO%' : EO를 포함
    not like '%EO%' : EO를 제외
*/

/*
    is null : null 이면 true
    is not null : 값이 있으면 true
*/

/*
    산술 연산자 : +, -, *, /
*/

/*
    집합 연산자
    union : 2개 이상 테이블의 중복된 행 제거 (중복 :모든 열의 값이 같을 때)
    union all : 2개 이상 테이블의 중복된 행 제거 없음
*/

https://www.boostcourse.org/ds102/lecture/373375?isDesc=false

 

네이버 부스트코스 SQL 4-2) 함수 _ 단일행 함수

/*
    단일 행 함수 : 숫자, 문자, 날짜, 형변환, 일반
    복수 행 함수 : 집계형, 그룹형 (group by 와 같이)
    윈도우 함수 : 순위, 집계, 누적
*/

/*
    단일 행 함수
    _ 모든 행에 각각
    _ 숫자형 : abs(), 반올림 round(숫자, N), sqrt()
    _ 문자형 : lower()/upper(), left(문자, N)/right(문자, N), length()
    _ 날짜형 : year/month/day(), date_add(날짜, interval), datediff(날짜1, 날짜2)
    _ 형변환 : date_format('2023-06-27', '%m-%d-%y')
             cast(형식1, 형식2) >> cast('2023-06-27 12:00:00' as DATE)
    _ 일반 : ifnull(A, B) >> A가 Null이면 B, 아니면 A >> ifnull(NUll, 0)
            case when (조건1) then (반환1)
                 when (조건2) then (반환2)
                 else (나머지) end
*/
 

기초 데이터 분석을 위한 핵심 SQL

부스트코스 무료 강의

www.boostcourse.org

 

경기도에 위치한 식품창고 목록 출력하기

 네이버 부스트코스에서 배운 ifnull과 like를 사용했다. 뿌-듯.

select WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, ifnull(FREEZER_YN, 'N')
    from FOOD_WAREHOUSE
    where ADDRESS like '경기도%'
    order by WAREHOUSE_ID asc;