【发布时间】:2011-08-31 08:51:26
【问题描述】:
想象一下 grails 中的以下问题
您有某种具有数字属性的审计跟踪域类。例如一个类,其中写入了您的 scrum 项目的当前燃尽值:
class burndown {
Date createDate
int value
}
每次更新任务时,您的项目都使用此类存储当前燃尽值 - 这意味着一天更新几次。
现在您想用每一天的最后存储值绘制图表。
用于此的 SQL 语句可能类似于
select
*
from
table
where
id in (
select
max(id)
from
table
group by
TO_CHAR(create_date,'yyyyddmm')
)
现在我的问题是:你如何在 grails 中进行这样的查询?
如果我必须使用这样的SQL语句,如何避免将表名和列名硬编码在语句中?
PS:此代码尚未经过测试。只是从我的脑海中写下来......但我想你感觉到我想问的内容
【问题讨论】:
-
你的意思可能是:
(select max(id) from table group by...),对吧? -
btw:我知道,我应该将数据汇总到另一个表中,以免遇到性能问题...
-
另一件事:如果
create_date字段的类型为date而不是日期时间,则不需要转换为char。您可以安全地GROUP BY create_date,查询将能够使用(create_date)或(create_date, id)上的索引并高效运行。 -
将聚合数据放在另一个表中当然是另一种选择,当表会变得很大并且查询比接受速度慢。
标签: sql hibernate grails groovy grails-orm