Scalar functions

eunbi kim·2024년 4월 8일
0
post-custom-banner
  • Ucase
  • Lcase
  • Mid
  • Length
  • Round
  • NOW
  • FORMAT
  • exercises

Scalar functions란, 입력값을 기준으로 단일 값을 반환하는 함수이다.

EDA시간에 크롤링으로 만든 sandwich 데이터 csv파일을 활용할 것이다.
Price는 $ 떼고 float로 변환하는 전처리 작업을 거친 후 쿼리 짤 때 값을 적용해주고

sql = "create table sandwich (ranking int, cafe varchar(32), menu varchar(32), price float, address varchar(32))"
cursor = conn.cursor(buffered=True)
cursor.execute(sql)
sql = "insert into sandwich values (%s, %s, %s, %s, %s)"

for i, row in df.iterrows():
    cursor.execute(sql, tuple(row))
    conn.commit()

파이썬으로 쿼리 실행시켜 sandwich 데이터 값들을 insert해주었다.

Ucase

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

  • 다음 문장을 모두 대문자로 조회

  • %15가 넘는 메뉴를 대문자로 조회

Lcase

LCASE: 영문을 소문자로 반환하는 함수

  • 다음 문장을 모두 소문자로 조회

  • %5가 안되는 메뉴를 소문자로 조회

Mid

MID: 문자열 부분을 반환하는 함수

select mid(string, start, length);

여기서 string: 원본 문자열,
start: 문자열 반환 시작 위치 (첫글자는 1, 마지막 글자는 -1),
length: 반환할 문자열의 길이

  • 1번 위치에서 4글자를 조회

  • 6번 위치에서 5글자를 조회

  • -4번 위치 (뒤에서 4번째 위치)에서 4글자를 조회

  • -8번 위치 (뒤에서 8번째 위치)에서 3글자를 조회

  • 11위 카페이름 중 두번째 단어만 조회 -> 6번 위치에서 4글자



Length

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

  • 다음 문장의 길이를 조회

  • 문자가 없는 경우 길이도 0

  • 공백의 경우에도 문자이므로 길이가 1

  • NULL의 경우 길이가 없으므로 NULL

  • Sandwich 테이블에서 랭킹 Top 3의 주소 길이를 검색

Round

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

select round(number, decimals_place);

number: 반올림할 대상,
decimals: 반올림할 소수점 위치

  • 반올림할 위치를 지정하지 않을 경우, 소수점 자리 0에서 반올림한다.

  • 두번째 소수점에서 반올림 -> 1

  • 세번째 소수점에서 반올림 -> 2

  • 일단위 위치는 -1

  • 십단위 위치는 -2

  • Sandwich 테이블에서 소수점 자리는 반올림해서 1달러 단위까지만 표시 (최하위 3개만 표시)

Now

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

Format

FORMAT: 숫자를 천단위 콤마가 있는 형식으로 반환하는 함수
형식은 round와 비슷하다.

select format(number, decimal_place);

number: 포맷을 적용할 문자 혹은 숫자
decimals: 표시할 소수점 위치

  • 소수점을 표시하지 않을 경우 -> 0

  • 소수점 두자리까지 표시 -> 2

  • 소수점 열자리까지 표시 -> 10

  • oil_place 테이블에서 가격이 백원단위에서 반올림했을 때 2000원 이상인 경우, 천원단위에 콤마를 넣어서 조회
    백원단위 반올림: round 조건에서-3

post-custom-banner

0개의 댓글