Поэтому параметры для моего запроса - это только диапазон дат.
Примерами параметров являются
startDateTime = '2018-01-10 00:00:00'
endDateTime = '2018-01-11 00:00:00'
К этому диапазону дат мне нравится группировать счет и количество на час диапазона дат, 0
- 23
- это значение часов.
Итак, ниже мой код - это.
dc.add(Restrictions.ge("date", startDateTime));
dc.add(Restrictions.lt("date", endDateTime));
dc.setProjection(
Projections.projectionList()
.add(Projections.alias(Projections.sum("amount"), "amount"))
.add(
Projections.sqlProjection(
"Cast(Count(id) as Integer) count",
new String[]{"count"},
new Type[]{StandardBasicTypes.INTEGER})
)
.add(
Projections.sqlProjection(
"hour(date) as date",
new String[]{"date"},
new Type[]{StandardBasicTypes.INTEGER})
)
);
Результат - это.
[
{
"amount": 0.1,
"count": 1,
"date": 3
},
{
"amount": 0.3,
"count": 1,
"date": 3
},
{
"amount": 1.5,
"count": 1,
"date": 11
},
{
"amount": 2.2,
"count": 1,
"date": 11
},
{
"amount": 0.6,
"count": 1,
"date": 11
}
]
Любая идея как?
вам нужно добавить groupProperty
. Я не уверен в параметрах
dc.add(Restrictions.ge("date", startDateTime));
dc.add(Restrictions.lt("date", endDateTime));
dc.setProjection(
Projections.projectionList()
.add(Projections.alias(Projections.sum("amount"), "amount"))
.add(
Projections.sqlProjection(
"Cast(Count(id) as Integer) count",
new String[]{"count"},
new Type[]{StandardBasicTypes.INTEGER})
)
.add(
Projections.groupProperty("hour(date)","date")
)
);