2

今日から365日前までの月単位でグループ化されたユーザーの数を取得したいと思います。Hibernate CriteriaBuilderAPIでGroovyを使用しています。このグループ化を行う簡単な方法はありますか?日付フィールドを月ごとにグループ化するための日付形式をどのように指定しますか?

今私は次のものを持っています:

             def con_cnt =Users.createCriteria().list {
            like('employeeid','c_%')
            between('sunsetdate', fromDate, toDate)
            projections {
                count('employeeid')
                //groupProperty('sunsetdate')

            }
        }

groupProperty('sunsetdate')は、日付ベースでグループ化し、グループ化に時刻も含めます。そのため、カウントは非常に一意の日時で計算され、カウント1はソーステーブルと同じになります。このアプローチを使用して、グループ化で日付形式をどのように指定しますか?または、HQLを使用する必要がありますか?

前もって感謝します。

4

1 に答える 1

3

詳細については、こちらをご覧ください。

ドメインクラスに、週、月、年ごとに3つの新しい数値フィールドを作成します。これらのフィールドは、テーブルの列にマップされません。3つのフィールドに静的マッピングを提供します。

      static mapping = {

    week formula('WEEK(DATE_OF_EXPENSE)')    //provide the exact column name of the date field
    month formula('MONTH(DATE_OF_EXPENSE)')
    year formula ('YEAR(DATE_OF_EXPENSE)')

    }
    def results = c.list {
  between("dateOfExpense", fromDate, toDate) 
  projections {
    switch(groupBy){
        case "week":
           groupProperty('year')
           groupProperty('month')
           groupProperty('week') 
        break;
        case "month"
           groupProperty('year')
           groupProperty('month')
        break;
        case "year":
           groupProperty('year')
        break;
    }        
    sum('amount')
  }
}
于 2013-03-25T15:29:38.887 に答える