Life is Really Short, Have Your Life!!

ござ先輩の主に技術的なメモ

SQLAlchemyでクロス集計

こんな感じでできます。

import sqlalchemy from case, func

rs = session.query(User,case[
  func.sum(case([(User.blood_type == 'A',1)],else_=0)).label("A"),
  func.sum(case([(User.blood_type == 'B',1)],else_=0)).label("B"),
  func.sum(case([(User.blood_type == 'O',1)],else_=0)).label("O"),
  func.sum(case([(User.blood_type == 'AB',1)],else_=0)).label("AB")
]).group_by(User.blood_type).all()

これはいいものだ。SQLAlchemy最高。