使用 HQL 或 CriteriaBuilder 查询的嵌套查询
Nested Query with HQL or CriteriaBuilder Query
我正在尝试按如下所述的查询获取分组结果
描述:我有一个 LogDetail table,它有 created_date 字段和 UserId 字段。我想知道每天有多少用户登录。 created_date 列是 DateTime 类型
select t, count(t) from (select substr(created_date,0,10) as t from logdetail) group by t
如果我 运行 内部查询,它工作正常,但是当我 运行 嵌套查询时出现错误... "unexpected token: ( near line 1, column 32"
ID User LoginDate LogoutDate
a000001 Arvind 06-05-17 12:15:00 06-05-17 12:13:00
a000002 Murty 07-05-17 12:15:00 07-05-17 12:51:00
a000003 John 07-05-17 12:15:00 07-05-17 12:42:00
a000004 John 07-05-17 02:27:00 07-05-17 03:25:00
a000001 Tej 08-05-17 12:15:00 08-05-17 02:15:00
a000001 John 08-05-17 12:15:00 08-05-17 01:55:00
上述的预期结果table
LoginDate Frequency
06-05-17 01
07-05-17 03
08-05-17 02
注意:源 table 有多个相同用户 john 的条目,第二点是源日期字段有日期时间,所以首先我们只需要从中获取日期部分,然后应用分组
我正在 HQL 或 Criteria Builder 查询中寻找解决方案。
有人知道吗?
您可以尝试如下
SQL查询得到结果
Select trunc(LoginDate), count(ID) from logdetail group by trunc(LoginDate);
相同的 HQL 查询将是
select trunc(ld.loginDate), count(ld.Id) from logDetail ld group by trunc(ld.loginDate)
注意:在 Hql 查询中,根据您在列上的列映射进行映射
希望这能解决您的问题。
我正在尝试按如下所述的查询获取分组结果
描述:我有一个 LogDetail table,它有 created_date 字段和 UserId 字段。我想知道每天有多少用户登录。 created_date 列是 DateTime 类型
select t, count(t) from (select substr(created_date,0,10) as t from logdetail) group by t
如果我 运行 内部查询,它工作正常,但是当我 运行 嵌套查询时出现错误... "unexpected token: ( near line 1, column 32"
ID User LoginDate LogoutDate a000001 Arvind 06-05-17 12:15:00 06-05-17 12:13:00 a000002 Murty 07-05-17 12:15:00 07-05-17 12:51:00 a000003 John 07-05-17 12:15:00 07-05-17 12:42:00 a000004 John 07-05-17 02:27:00 07-05-17 03:25:00 a000001 Tej 08-05-17 12:15:00 08-05-17 02:15:00 a000001 John 08-05-17 12:15:00 08-05-17 01:55:00
上述的预期结果table
LoginDate Frequency 06-05-17 01 07-05-17 03 08-05-17 02
注意:源 table 有多个相同用户 john 的条目,第二点是源日期字段有日期时间,所以首先我们只需要从中获取日期部分,然后应用分组
我正在 HQL 或 Criteria Builder 查询中寻找解决方案。
有人知道吗?
您可以尝试如下
SQL查询得到结果
Select trunc(LoginDate), count(ID) from logdetail group by trunc(LoginDate);
相同的 HQL 查询将是
select trunc(ld.loginDate), count(ld.Id) from logDetail ld group by trunc(ld.loginDate)
注意:在 Hql 查询中,根据您在列上的列映射进行映射
希望这能解决您的问题。