我想在我的 grails 应用程序中绘制一些图表,但在此之前我必须从数据库获取数据以提供图表,但我仍然无法弄清楚如何使用正确的方法获取我需要的数据。
我有一个开始日期和一个结束日期来限制时间段,我想按天或周、月、年等获取数据。
我想制作一个从开始日期到结束日期的循环,步长等于一天/周/月/年等。
你认为这是正确的方法吗?如果是,如何用 groovy 编写,如果不是,请告诉如何以正确的方式执行此操作
谢谢
我想在我的 grails 应用程序中绘制一些图表,但在此之前我必须从数据库获取数据以提供图表,但我仍然无法弄清楚如何使用正确的方法获取我需要的数据。
我有一个开始日期和一个结束日期来限制时间段,我想按天或周、月、年等获取数据。
我想制作一个从开始日期到结束日期的循环,步长等于一天/周/月/年等。
你认为这是正确的方法吗?如果是,如何用 groovy 编写,如果不是,请告诉如何以正确的方式执行此操作
谢谢
在这种情况下,我喜欢对查询本身的结果进行分组和求和,就像在普通 sql 中使用 sum() 和 group by 子句一样。Grails 基于 Hibernate,而 Hibernate 作为select new map()语法非常适合这些情况。
以下是 Grails 中按月选择财务总计的示例(如财务交易):
def query = """
select new map(sum(tx.value) as total, month(tx.date) as month, year(tx.date) as year)
from Transaction tx
where tx.date >= :beginDate and tx.date < :endDate
group by month(tx.date), year(tx.date)
order by year(tx.date) desc , month(tx.date) desc
"""
def result = Transaction.executeQuery(query,[beginDate:someDate, endDate:anotherDate])
使用该代码,您可以遍历result
变量并获取每个结果项,即 Maps。像这样:
result.each{ item ->
println "Financial total for ${item.month}/${item.year} is equal to ${item.total}"
}
我认为这是非常简单和直截了当的解决方案。问候...