1 引入
参考:SQL聚合函数
SQL聚合函数,包括:AVG()
,COUNT()
,MIN()
,MAX()
和SUM()
。
SQL聚合函数计算一组值并返回单个值。 例如,平均函数(AVG)采用值列表并返回平均值。
2 实验
2.1 构建数据表
1 | from sqlalchemy.ext.declarative import declarative_base |
数据表如下图所示:
下面的聚合函数,需要导入func
:
1 | from sqlalchemy import func |
2.2 AVG() - 返回集合中的平均值
参考:SQLAlchemy(二):SQLAlchemy对数据的增删改查操作、属性常用数据类型详解
1 | age_avg = session.query(func.avg(Person.age)).scalar() # 16.0000 |
注意:这里的age
虽然是int类型的,但是最后的平均值是“准确”的小数。
2.3 COUNT() - 返回集合中的项目数
返回查询结果的对象的数目,下面的例子是找到了toy
和tor
两个对象:
1 | u = session.query(Person).filter(Person.name.like('to%')).count() # 2 |
需要单独计算某一类对象的数量,可以用 func()
和 group_by()
配合查询:
1 | u = session.query(Person.name, func.count(Person.name)).group_by(Person.name).all() |
返回查询得到的的数值,我们使用 scalar()
方法:
1 | u = session.query(func.count(Person.age)).scalar() # 7 |
2.4 MIN() - 返回集合的最小值
参考:SQLAlchemy(二):SQLAlchemy对数据的增删改查操作、属性常用数据类型详解
1 | age_min = session.query(func.min(Person.age)).scalar() # 7 |
2.5 MAX() - 返回集合的最大值
参考:SQLAlchemy(二):SQLAlchemy对数据的增删改查操作、属性常用数据类型详解
1 | age_max = session.query(func.max(Person.age)).scalar() # 23 |
2.6 SUM() - 返回所有值的总和
1 | age_sum = session.query(func.sum(Person.age)).scalar() # 112 |