[SQLAlchemy] 각 코드별로 유형별 합계를 얻고 싶을 때

Posted by
# -*- coding: utf-8 -*-
from sqlalchemy import func, case
from Database import db_session
from Models import Order

result = db_session.query(Order.code, func.sum(Order.qty).label('total_qty'), func.sum(case([
	(Order.type == 'A', Order.qty),
	(Order.type == 'B', 0)
])).label('A_qty'), func.sum(case([
	(Order.type == 'A', 0),
	(Order.type == 'B', Order.qty)
])).label('B_qty')).filter(조건문).group_by(Order.code).all()

print result

<! 설마 위 소스를 그냥 복&붙하곤 안 된다는 사람은 없길 바람 ㄷㄷㄷㄷ !>

위 소스를 실행시키면 code별로 type 유형별 합계를 얻을 수 있다.

핵심 = case([(조건1, 값), (조건2, 값), … (조건n, 값)])