[제로베이스] 데이터 사이언스 12기 - (03-20 스터디노트)

윤태호·2023년 3월 20일
0
post-thumbnail

오늘 수강한 강의 - Scalar Functions (01 ~ 06) SQL Subquery (01 ~ 11)

01 ~ 06 Scalar Functions

실습환경 만들기

  • AWS RDS (database-1) zerobase 에 접속
  • sandwich 데이터 확인 (50 rows)

Scalar Functions

  • 입력값을 기준으로 단일 값을 반환하는 함수

UCASE

영문을 대문자로 반환하는 함수

[UCASE 문법]

  • 다음 문장을 모두 대문자로 조회
  • $15 가 넘는 메뉴를 대문자로 조회

LCASE

영문을 소문자로 변환하는 함수

[LCASE 문법]

  • LCASE Test
  • $5 가 안되는 메뉴를 소문자로 조회

MID

영문을 소문자로 변환하는 함수

[MID 문법]

  • string : 원본 문자열
  • start : 문자열 반환 시작 위치. (첫글자는 1, 마지막글자는 -1)
  • length : 반환할 문자열 길이
  • 1번 위치에서 4글자를 조회
  • 6번 위치에서 5글자를 조회
  • -4번 위치 (뒤에서 4번째 위치) 에서 4글자를 조회
  • 8번 위치 (뒤에서 8번째 위치) 에서 3글자를 조회
  • 11위 카페이름 중 두번째 단어만 조회
  • 11위 카페이름 중 두번째 단어만 조회 - 6번 위치에서 4글자
  • 11위 카페이름 중 두번째 단어만 조회 - -4번 위치 (뒤에서 4번째) 에서 4글자

LENGTH

문자열의 길이를 반환하는 함수

[LENGTH 문법]

  • 다음 문장의 길이를 조회
  • 문자가 없는 경우 길이도 0
  • 공백의 경우에도 문자이므로 길이가 1
  • NULL 의 경우 길이가 없으므로 NULL
  • sandwich 테이블에서 Top 3의 주소 길이를 검색

ROUND

지정한 자리에서 숫자를 반올림하는 함수

[ROUND 문법]

  • number : 반올림할 대상
  • decimals : 반올림할 소수점 위치 (Option)
  • 반올림할 위치를 지정하지 않을 경우, 소수점 자리 (0) 에서 반올림
  • 소수점 첫번째 위치는 0
  • 두번째 소수점 위치는 1
  • 세번째 소수점 위치는 2
  • 일단위 위치는 -1
  • 십단위 위치는 -2
  • sandwich 테이블에서 소수점 자리는 반올림해서 1달러 단위까지만 표시 (최하위 3개만 표시)

NOW

현재 날짜 및 시간을 반환하는 함수

[NOW 문법]

  • NOW 예제

FORMAT

숫자를 천단위 콤마가 있는 형식으로 반환하는 함수

[FORMAT 문법]

  • number : 포맷을 적용할 문자 혹은 숫자
  • decimals : 표시할 소수점 위치
  • 소수점을 표시하지 않을 경우 0
  • 소수점 두자리까지 표시할 경우 2
  • 소수점 열자리까지 표시
  • oil_price 테이블에서 가격이 백원단위에서 반올림 했을 때 2000원 이상인 경우 천원단위에 콤마를 넣어서 조회

01 ~ 11 SQL Subquery

About Subquery

  • 하나의 SQL 문 안에 포함되어 있는 또 다른 SQL 문을 말한다
  • 메인쿼리가 서브쿼리를 포함하는 종속적인 관계이다
  • 서브쿼리는 메인쿼리의 칼럼 사용 가능
  • 메인쿼리는 서브쿼리의 칼럼 사용 불가

Subquery 사용시 주의

  • Subquery 는 괄호로 묶어서 사용
  • 단일 행 혹은 복수 행 비교 연산자와 함께 사용 가능
  • subquery 에서는 order by 를 사용X

Subquery 종류

  • 스카라 서브쿼리 (Scalar Subquery) - SELECT 절에 사용
  • 인라인 뷰 (Inline View) - FROM 절에 사용
  • 중첩 서브쿼리 (Nested Subquery) - WHERE 절에 사용

Scalar Subquery

  • SELECT 절에서 사용하는 서브쿼리. 결과는 하나의 Column 이어야 한다
  • 서울은평경찰서의 강도 검거 건수와 서울시 경찰서 전체의 평균 강도 검거 건수를 조회

Inline View

  • FROM 절에 사용하는 서브쿼리. 메인쿼리에서는 인라인 뷰에서 조회한 Column 만 사용가능하다
  • 경찰서 별로 가장 많이 발생한 범죄 건수와 범죄 유형을 조회
  • 경찰서 별로 가장 많이 발생한 범죄 건수와 범죄 유형을 조회

Nested Subquery (중첩 서브쿼리)

  • WHERE 절에서 사용하는 서브쿼리
- Single Row - 하나의 열을 검색하는 서브쿼리
- Multiple Row - 하나 이상의 열을 검색하는 서브쿼리
- Multiple Column - 하나 이상의 행을 검색하는 서브쿼리

[Single Row Subquery]

  • 서브쿼리가 비교연산자( =, >, >=, <, <=, <>, !=)와 사용되는 경우, 서브쿼리의 검색 결과는 한 개의 결과값을 가져야 한다 (두개 이상인 경우 에러)
  • 괄호 없이 (에러)
  • 한 개 이상의 결과 (에러)
  • Single Row Subquery 예제

[Multiple Row Subquery]

  • Multiple Row - IN (서브쿼리 결과 중에 포함 될때)
  • SNL 에 출연한 영화배우를 조회
  • Multiple Row - EXISTS (서브쿼리 결과에 값이 있으면 반환)
  • 범죄 검거 혹은 발생 건수가 2000건 보다 큰 경찰서 조회
  • Multiple Row - ANY (서브쿼리 결과 중에 최소한 하나라도 만족하면 (비교연산자 사용))
  • SNL 에 출연한 적이 있는 연예인 이름 조회
  • Multiple Row - ALL (서브쿼리 결과를 모두 만족하면 (비교 연산자 사용))

[Multi Column Subquery - 연관 서브쿼리]

  • 서브쿼리 내에 메인쿼리 컬럼이 같이 사용되는 경우
  • 강동원과 성별, 소속사가 같은 연예인의 이름, 성별, 소속사를 조회

재미있었던 부분

Scalar Functions 부분에서 여러가지 함수를 이용하여 데이터를 조회하는 것이 가장 기억에 남는다

어려웠던 부분

Scalar Functions 챕터에 비하여 SQL subquery 부분이 조금 복잡하고 어려웠다
Select절 From절 Where절 별로 사용하는 서브쿼리가 다르고 사용시 괄호로 묶어야하는 부분의 차이가 있어서 조금 더 어려웠던 것 같다

느낀점 및 내일 학습 계획

SQL 파트가 끝났지만 뭔가 익혀야 할 것들이 너무 많아서 마무리아닌 마무리가 된 것 같은 느낌이다
헷갈리지 않도록 개념 위주로 복습하고 후에 혼자서 해보기 파트를 다시 해보며 기억에 새겨야겠다
내일은 Git 파트를 들어갈 예정이다

profile
부트캠프 참여중

0개의 댓글