Слияние кода завершено, страница обновится автоматически
.groupBy
.column1().column2()
.end()
示例1:
@Test
public void test_groupBy() throws Exception {
UserQuery query = new UserQuery()
.selectId()
.where.id().eq(24L).end()
.groupBy.userName().age().end();
mapper.listEntity(query);
db.sqlList().wantFirstSql()
.eq("SELECT id FROM t_user WHERE id = ? GROUP BY user_name, age");
}
.groupBy.column1().column2().end().end()
.having
.聚合函数1.column1().条件(条件值)
.聚合函数2.column2().条件(条件值)
.end()
这里的条件和where部分类似, 支持eq, ge, gt等,示例
.where.id().eq(24L).end()
.groupBy.id().end()
.having.sum.age().between(2, 10)
.and.count.id().gt(2)
.and.avg.age().in(new int[]{2, 3})
.and.min.age().gt(10)
.and.max.age().lt(20)
.end();
对应sql语句
GROUP BY id
HAVING SUM(age) BETWEEN ? AND ?
AND COUNT(id) > ?
AND AVG(age) IN (?, ?)
AND MIN(age) > ?
AND MAX(age) < ?
示例: having.字段().聚合函数().条件(条件值)
@DisplayName("按级别grade统计年龄在15和25之间的人数在10人以上,该条件内最大、最小和平均年龄")
@Test
public void test_count_gt_10_groupByGrade() throws Exception {
UserQuery query = new UserQuery()
.select
.apply(grade)
.id().count()
.age().max()
.age().min()
.age().avg().end()
.where
.age().between(15, 25).end()
.groupBy.apply(grade).end()
.having
.id().count().gt(10)
.end();
mapper.listEntity(query);
db.sqlList().wantFirstSql()
.eq("SELECT grade, COUNT(id), MAX(age), MIN(age), AVG(age) " +
"FROM t_user " +
"WHERE age BETWEEN ? AND ? " +
"GROUP BY grade " +
"HAVING COUNT(id) > ?");
}
示例2: having.apply("聚合函数").条件(条件值)
@Test
public void test_groupBy_having() throws Exception {
UserQuery query = new UserQuery()
.select
.apply("count(1)", "sum(1)").end()
.where
.id().eq(24L).end()
.groupBy
.userName().age().end()
.having
.apply("count(1)").gt(10)
.apply("sum(age)").gt(3)
.end();
mapper.listEntity(query);
db.sqlList().wantFirstSql()
.eq("SELECT count(1), sum(1) FROM t_user " +
"WHERE id = ? GROUP BY user_name, age " +
"HAVING count(1) > ? AND sum(age) > ?");
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )