获取总和作为附加列而不是唯一的列

Get sum as an additional column instead of only column

我想汇总所有订单金额,从我的数据库中按用户分组,针对一组特定用户。

我正在使用 .sum() and .groupBy() 来执行此操作,如下所示:

knex('orders')
  .select(['id_user', 'order_amount'])
  .whereIn('id_user', ['user-foo', 'user-bar'])
  .sum('order_amount')
  .groupBy('id_user')

这returns总和:

[ { sum: 500 } ]
[ { sum: 600 } ]

但是现在没有办法知道哪个总和对应哪个用户。

这将是我理想的结果:

[ { id_user: 'user-foo', sum: 500 } ]
[ { id_user: 'user-bar', sum: 600 } ]

我怎样才能得到每个总和的 id_user 列?

为此您需要使用 knex.raw()

knex.select('id_user', knex.raw('SUM(order_amount)')).from('orders').groupBy('id_user');