You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Sequelize中按当年createdAt月份与status字段执行GROUP BY分组查询

Sequelize 双维度分组统计实现方案

以下是按「本年度数据筛选、按创建月份+状态双维度分组统计」需求的完整实现代码:

首先导入Sequelize内置工具:
const { Sequelize, Op, fn, col, literal } = require('sequelize');

以下示例适配MySQL数据库,其他数据库可对应调整日期函数:

// 请将YourModel替换为你实际使用的业务模型名
const statsResult = await YourModel.findAll({
  attributes: [
    // 提取创建时间的月份,别名为month
    [fn('MONTH', col('createdAt')), 'month'],
    // 保留状态字段
    'status',
    // 统计每个分组的记录数,可根据需求替换为SUM/AVG等其他聚合函数
    [fn('COUNT', col('id')), 'recordCount']
  ],
  where: {
    createdAt: {
      // 筛选当前自然年的所有数据(当年1月1日0点至今)
      [Op.gte]: new Date(new Date().getFullYear(), 0, 1)
    }
  },
  // 按月份、状态两个维度分组
  group: ['month', 'status'],
  // 可选:按月份升序排序,方便结果按时间顺序展示
  order: [[col('month'), 'ASC']]
});

注意事项

  • 如果你使用PostgreSQL数据库,提取月份的写法需要调整为:[fn('EXTRACT', literal('MONTH FROM "createdAt"')), 'month']
  • 如果需要输出月份全称/简称,可以直接调用数据库对应日期函数,比如MySQL的MONTHNAME(createdAt),或查询后对结果做二次格式化
  • 聚合规则可按需修改,如需统计分组内的金额总和,将COUNT(id)替换为SUM(你要统计的金额字段名)即可

内容的提问来源于stack exchange,提问作者Yasiru Ayeshmantha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 01:45:03