SQLAlchemy 中的Group By用法

这里我们要用到的query对象的方法:

  • .filter_by(..)
  • .group_by(..)
  • .having(..)

我们需要额外导入的方法:
from sqlalchemy import func

func方法主要用来做统计,映射到sql语句中具体的统计方法,如:

  • func.count(..)
  • func.sum(..)

func方法的格式为:func('字段名').label('显示名')

SQL语句的用法如下:

SELECT school, COUNT(*) AS c FROM persons WHERE gender="male" GROUP BY age

SQLAlchemy中如下:

from sqlalchemy import func

results = sessin.query( Person.school, func.count('*').label('c') ).filter(
    Person.gender=='male'
).group_by( Person.age )

筛选

SQL中针对Group By还可以再进一步筛选,但是要用另一个关键词Having

SQL语句的用法如下:

SELECT school, COUNT(*) AS c FROM persons WHERE gender="male" GROUP BY age HAVING c >1

SQLAlchemy中如下:

nums = func.count('*').label('c')

results = sessin.query( Person.school, nums ).filter(
    Person.gender=='male'
).group_by(
    Person.age
).having(
    nums > 10
)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容