我的数据库中有这个表,我想构建一个查询,该查询将返回过去 7 天中包含日期的记录,数量为最大值,记录将按 foo_id 分组。例如:
+---------------------------------------------------+
| id | number | date | foo_id |
+---------------------------------------------------+
| 0| 29 | 2013-10-01 08:52:00.000000 | 7 |
| 1| 12 | 2013-10-02 08:52:00.000000 | 7 |
| 2| 23 | 2013-10-02 08:52:00.000000 | 2 |
| 3| 42 | 2013-10-02 08:52:00.000000 | 2 |
+---------------------------------------------------+
查询将返回:
| 3| 42 | 2013-10-02 08:52:00.000000 | 2 |
| 0| 29 | 2013-10-01 08:52:00.000000 | 7 |
我已经建立了这个查询,但它根本不起作用:
Calendar time = Calendar.getInstance();
time.add(Calendar.DATE, -7);
QueryBuilder<GreatTable, Integer> qBt = dao.queryBuilder();
qBt.where().ge(GreatTable.DATE_COLUMN_NAME, time.getTime());
qBt.orderBy(GreatTable.DATE_COLUMN_NAME, false).orderBy(GreatTable.NUMBER_COLUMN_NAME, false);
qBt.groupBy(GreatTable.FOO_ID_COLUMN_NAME);
它的输出是:
| 1| 12 | 2013-10-02 08:52:00.000000 | 7 |
| 2| 23 | 2013-10-02 08:52:00.000000 | 2 |
每组按 foo_id 必须是具有最大数量和日期的记录。