sqlalchemy의 그룹화 및 계산 함수


답변:


165

계산에 대한 문서group_by쿼리의 경우 사용하는 것이 더 낫다고 말합니다 func.count().

from sqlalchemy import func
session.query(Table.column, func.count(Table.column)).group_by(Table.column).all()

16
여기에 사용하는 사람들을 위해 전체 문장의 Table.query대신 속성 session.query():Table.query.with_entities(Table.column, func.count(Table.column)).group_by(Table.column).all()
야쿱 Kukul

2
@jkukul 이것은 그 자체로 답이되어야합니다. 저는 항상 서브 쿼리를 할 때이 제한을 극복하는 방법을 궁금해했고 group_by와 count를 사용하고 싶었습니다 ..!
chris-sc

1
이 답변에 대한 편집은 첫 번째 문장을 의미가 없게 만듭니다. 무엇 보다 "더 나은" ?
Mark Amery

33

Table.query속성 을 사용하는 경우 :

from sqlalchemy import func
Table.query.with_entities(Table.column, func.count(Table.column)).group_by(Table.column).all()

session.query()방법 을 사용 하는 경우 (miniwark의 답변에 명시된대로) :

from sqlalchemy import func
session.query(Table.column, func.count(Table.column)).group_by(Table.column).all()

+ 엔터티 포함
Espoir Murhabazi

27

여러 그룹과 교차점을 신뢰할 수도 있습니다.

self.session.query(func.count(Table.column1),Table.column1, Table.column2).group_by(Table.column1, Table.column2).all()

위의 쿼리는 두 열의 가능한 모든 값 조합에 대한 개수를 반환합니다.


질문 주셔서 감사합니다. 그것에 대해 생각하는 동안 제 관련 질문에 대한 답을 찾았습니다. ;-)
fccoelho 2011 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.