在 sequelize 中查找总和和分组

Mul*_*yan 12 mysql node.js sequelize.js

我有一个捐款表如下。

捐款表

| id| amount | member_id |
|---|--------|-----------|
| 0 |   500  |         01|
| 1 |  1000  |         02|
| 2 |  2000  |         01|
Run Code Online (Sandbox Code Playgroud)

如何按成员 id 查找 sum 和分组表,如下所示。

| amount | member_id |
|--------|-----------|
|  2500  |         01|
|  1000  |         02|
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下代码,但似乎不起作用。

const salesValue = await DONATIONS.sum('amount', {
    group: 'member_id'
});
Run Code Online (Sandbox Code Playgroud)

小智 32

您必须使用sequelize.fn. 要定位您必须使用的金额列sequelize.col并将它们分组,您必须传递group选项。

const totalAmount = await DONATIONS.findAll({
        attributes: [
          'member_id',
          [sequelize.fn('sum', sequelize.col('amount')), 'total_amount'],
        ],
        group: ['member_id'],
      });
Run Code Online (Sandbox Code Playgroud)

  • 如果可能,您应该添加文字来解释您的答案 (3认同)

小智 6

如果你想获取值直接添加属性:raw: true

const totalAmount = await DONATIONS.findAll({
  attributes: [
    'member_id',
    [sequelize.fn('sum', sequelize.col('amount')), 'total_amount'],
  ],
  group: ['member_id'],
  raw: true
});
Run Code Online (Sandbox Code Playgroud)