Bookshelf.js多列分组(groupBy)

3
我正在构建一个程序,使用Bookshelf访问MySQL数据库。其中一件我想要做的事情是按两个列分组数据。但是我无法弄清如何做到这一点。
我尝试使用knex groupByRaw和lodash _.groupBy,但我认为我没有在正确的位置使用它们。
以下是情况: 表格 我在一个表格中存储计时器,具有以下列:id、userID、projectID、startTime、stopTime。
我想选择给定日历周内每个用户的累计时间。
我的猜测是结果查询可能像这样: SELECT SUM(TIMESTAMPDIFF(SECOND, startTime, endTime)), userID, YEARWEEK(startTime, 1), projectID FROM time GROUP BY userID, YEARWEEK(startTime, 1) HAVING projectID = 1

你解决了这个问题吗? - Tzook Bar Noy
@TzookBarNoy,恐怕我从来没有这样做过 :( - Cas
2个回答

3

有点晚了,但是为了记录:你可以连续多次调用Knex的groupBy。所以:

  .groupBy("userID")
  .groupByRaw("YEARWEEK(startTime, 1)")

1
您的回答可能有点过时了,但它确实救了我的一天。使用groupBy链接实际上是有效的,而逗号分隔的列名则不行。我正在使用knex和mysql,但这可能也适用于bookshelf.js。非常感谢! - LongHike

1

不要重复许多次 groupby 的单词,使用这个语法。

.groupBy(['userID','YEARWEEK(startTime, 1)'])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接