Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SQL通过hibernate从组中删除arithmatic_Java_Sql_Hibernate - Fatal编程技术网

Java SQL通过hibernate从组中删除arithmatic

Java SQL通过hibernate从组中删除arithmatic,java,sql,hibernate,Java,Sql,Hibernate,我目前有一个在SQL中运行良好的查询,但我需要它在Hibernate中运行。它查找一个时间窗口内2个字段的记录数。但是,快速的google搜索会告诉您,hibernate中的groupby子句中不能有算术表达式 我的表/SQL: CREATE TABLE T ( Field_1 CHAR(4), Field_2 CHAR(4), Time_Stamp Date ); --Populated DECLARE @DATE1 DATE, @DATE2 DATE, @INT

我目前有一个在SQL中运行良好的查询,但我需要它在Hibernate中运行。它查找一个时间窗口内2个字段的记录数。但是,快速的google搜索会告诉您,hibernate中的
groupby
子句中不能有算术表达式

我的表/SQL:

CREATE TABLE T ( 
    Field_1 CHAR(4),
    Field_2 CHAR(4),
    Time_Stamp Date
);

--Populated

DECLARE @DATE1 DATE, @DATE2 DATE, @INTERVAL INT;
@DATE1 = TO_DATE('2013-01-01', 'yyyy-MM-dd');
@DATE2 = TO_DATE('2013-01-02', 'yyyy-MM-dd');
@INTERVAL = 15;

SELECT * FROM (
    SELECT COUNT(Field_1) as field1, 
        COUNT(Field_2) as field2, 
        FLOOR( TO_NUMBER( TO_CHAR( Time_Stamp, 'hhmi' ) ) / @INTERVAL ) as timeInterval
    FROM T
    WHERE Time_Stamp BETWEEN @DATE1 AND @DATE2
    GROUP BY FLOOR( TO_NUMBER( TO_CHAR( Time_Stamp, 'hhmi' ) ) / @INTERVAL )
) ORDER BY timeInterval ASC;
如您所见,我可以通过删除
顺序,这样就不用使用子查询了。在本例中,是否可以使用
groupby
子句或其他解决方法执行类似操作


我已经在hibernate中编写了查询,并且可以在这两个查询之间进行转换。我只需要查询的结构,这样算法就在group by函数之外,SQL语法就可以了。

在内部查询中执行计算,然后根据结果进行分组

SELECT 
        COUNT(Field_1) as field1, 
        COUNT(Field_2) as field2,
        timeInterval
 FROM (
    SELECT 
        Field_1,
        Field_2,
        FLOOR( TO_NUMBER( TO_CHAR( Time_Stamp, 'hhmi' ) ) / @INTERVAL ) as timeInterval
    FROM T
    WHERE Time_Stamp BETWEEN @DATE1 AND @DATE2
) 
GROUP BY timeInterval
ORDER BY timeInterval ASC;