聚合查询
优质
小牛编辑
145浏览
2023-12-01
>[danger] 注意!!! 使用聚合功能时,必须给它一个别名,以便能够从模型中访问它 > 聚合函数的计算,都是排除了 null 值,所以COUNT( id ) 一般推荐用非空的主键来计算
COUNT 计算数量
const { Sequelize } = app;
// 查询班级总人数,按照姓名聚合
const ret = await Student.findAll({
attributes: [
// col 列名称,'别名'
[Sequelize.fn('COUNT', Sequelize.col('name')), 'no_name']
]
})
SELECT COUNT(`name`) from Student
[{"no_name":12}]
MAX 计算最大值
const { Sequelize } = app;
// 查询所有学生英语成绩最高分
const ret = await Student.findAll({
attributes:[[Sequelize.fn('MAX',Sequelize.col('english')), 'english_max']]
})
MIN 计算最小值
// 查询所有学生英语成绩最低分
const ret = await Student.findAll({
attributes:[[Sequelize.fn('MIN',Sequelize.col('english')), 'english_min']]
})
SUN 求和
const { Sequelize } = app;
// 查询所有学生英语成绩的总和
const ret = await Student.findAll({
attributes:[[Sequelize.fn('SUM',Sequelize.col('english')), 'english_sum']]
})
SELECT SUM(`english`) FROM ...
AVG 平均值
const { Sequelize } = app;
// 查询所有学生英语成绩的平均分
const ret = await Student.findAll({
attributes:[[Sequelize.fn('AVG',Sequelize.col('english')), 'english_avg']]
})
SELECT AVG(`english`) FROM ...