2017-05-12 19 views
0

テーブルからレコードを取得する必要があります。今から24時間後に時間ベースのトランザクションを表示する必要があります。時間間隔の日付グループの休止グループ

私は休止状態を使用していますが、私は時間ごとにグループ化できません。 まったく1時間ごとにステータスを取得する必要があります。

例。

For 1 hour 
status count 
S  1 
F  2 

次の時と同じ。

DrWalletId CrWalletId TransAmount Currency TransTime    Status 
29251  29620    50 INR   2017-03-30 18:34:41.397 N 
29251  29620    50 INR   2017-03-30 18:39:23.633 N 
29251  29620    50 INR   2017-03-30 18:40:52.027 N 
29251  29620    50 INR   2017-03-30 18:44:02.353 N 
29251  29620    50 INR   2017-03-30 18:48:43.087 N 
29251  29620    50 INR   2017-03-30 18:52:16.460 S 
29620  29251    50 INR   2017-03-30 19:14:56.937 S 
29620  29251    50 INR   2017-03-30 19:19:52.687 N 
29620  29251    50 INR   2017-03-30 19:22:34.270 N 
29620  29251    50 INR   2017-03-30 19:24:36.310 N 
29620  29251    50 INR   2017-03-30 19:31:33.430 N 
29620  29251    50 INR   2017-03-30 19:53:11.517 N 
29620  29251    50 INR   2017-03-30 19:54:25.627 F 
29620  29251    50 INR   2017-03-30 20:09:41.107 F 
29620  29251    50 INR   2017-03-30 20:21:12.873 N 
29620  29251    50 INR   2017-03-30 20:25:17.397 A 

あなたは私はあなたの理解のためのクエリを作成しているEXTRACT()

を使用することができ休止

答えて

1

でそれを行う方法を提案してください、私はあなたにもJPAを使用していると仮定しています。そうでない場合は、必要に応じて自由に変更してください。

@Query("SELECT new com.example.HourlyTransactionStatus(CAST(EXTRACT(HOUR FROM (T.transTime - :referenceDate)) AS long), T.status, COUNT(T.status)) " + 
     "FROM Transactions T " + 
     "GROUP BY EXTRACT(HOUR FROM (T.transTime - :referenceDate)), T.status") 
List<HourlyTransactionStatus> getHourlyTransactionStatus(@Param("referenceDate") Date referenceDate); 

そして私は、DB

DB

から
select extract(hour from T.trans_time - '2017-03-30 00:00:00'), T.status, count(T.status) 
from test_so T 
group by extract(hour from T.trans_time - '2017-03-30 00:00:00'), T.status 

結果

date_part status count 
18  S  1 
18  N  5 
19  N  5 
19  F  1 
19  S  1 
20  A  1 
20  F  1 
20  N  1 
のモデル HourlyTransactionStatus

@AllArgsConstructor 
class HourlyTransactionStatus { 
    private Long hour; // hours passed from referenceDate 
    private String status; 
    private Long count; 
} 

同じクエリを作成しました

関連する問題