将总和作为附加列而不是仅列

时间:2019-12-20 21:22:18

标签: sql postgresql knex.js

我想对数据库中按用户分组的每个用户的所有订单金额进行汇总。

我正在使用.sum().groupBy()来做到这一点,就像这样:

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

这将返回总和:

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

但是现在无法知道哪个总和对应于哪个用户。

这是我理想的结果:

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

我又如何为每个款项获得id_user列?

1 个答案:

答案 0 :(得分:2)

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

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