쿼리에서 값 계산하기

Python으로 배우는 데이터베이스 입문

Jason Myers

Co-Author of Essential SQLAlchemy and Software Engineer

수학 연산자

  • 덧셈 +
  • 뺄셈 -
  • 곱셈 *
  • 나눗셈 /
  • 나머지 %
  • 데이터 타입에 따라 동작이 다름
Python으로 배우는 데이터베이스 입문

차이 계산하기

stmt = select([census.columns.age,           
        (census.columns.pop2008 -
        census.columns.pop2000).label('pop_change')
    ])

stmt = stmt.group_by(census.columns.age) stmt = stmt.order_by(desc('pop_change'))
stmt = stmt.limit(5)
results = connection.execute(stmt).fetchall() print(results)
[(61, 52672), (85, 51901), (54, 50808), (58, 45575),
(60, 44915)]
Python으로 배우는 데이터베이스 입문

CASE 구문

  • 조건에 따라 데이터를 다르게 처리함
  • 일치 조건 목록과, 조건이 맞을 때 반환할 열을 지정함
  • 어떤 조건에도 맞지 않을 때 처리할 else 절로 마무리함
Python으로 배우는 데이터베이스 입문

CASE 예시

from sqlalchemy import case

stmt = select([ func.sum( case([ (census.columns.state == 'New York', census.columns.pop2008) ], else_=0))])
results = connection.execute(stmt).fetchall() print(results)
[(19465159,)]
Python으로 배우는 데이터베이스 입문

CAST 구문

  • 데이터를 다른 타입으로 변환
  • 유용한 경우
    • 나눗셈을 위해 정수를 실수로
    • 문자열을 날짜/시간으로
  • 열 또는 표현식과 대상 Type을 받음
Python으로 배우는 데이터베이스 입문

백분율 예시

from sqlalchemy import case, cast, Float

stmt = select([ (func.sum( case([ (census.columns.state == 'New York', census.columns.pop2008) ], else_=0)) / cast(func.sum(census.columns.pop2008), Float) * 100).label('ny_percent')])
results = connection.execute(stmt).fetchall() print(results)
[(Decimal('6.4267619765'),)]
Python으로 배우는 데이터베이스 입문

연습해 봅시다!

Python으로 배우는 데이터베이스 입문

Preparing Video For Download...