sqlalchemy中的分组和计数功能


Answers:


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()
Jakub Kukul,

2
@jkukul这应该是一个答案-我一直想知道在执行子查询时如何解决此限制,并想使用group_by和count ..!
chris-sc

1
对这个答案的编辑使第一句话变得毫无意义。“更好”比什么
马克·阿默里

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年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.