聚合查询

优质
小牛编辑
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 ...