我需要从表中获取三个字段。该表包含字段 - id,timestamp,viewTime。我需要获取最大(时间戳)记录的最小值(时间戳),最大值(时间戳),视图时间。我宁愿只有一个查询。
SELECT MAX(timestamp),
MIN(timestamp),
viewTime
FROM session_progress
WHERE session_id = 2374;
此查询正确返回min,max,但返回最小viewTime。我真正想要的是具有最大时间戳的记录的viewTime。
前:
timestamp viewTime
----------------------------------
2011-11-05 10:21:00 1055
2011-11-06 15:00:00 8900
2011-11-07 18:20:00 750
2011-11-07 19:23:00 4200
查询返回viewTime 750,但我需要最大的viewTime,即4200。
如果答案是用grails编写的,那就更好了(这与上面的SQL查询相同):
def sp_res = sp.get {
projections {
min("timestamp")
max("timestamp")
totalTime
}
and {
eq("sessionId", unSession.id)
}
}
答案 0 :(得分:1)
select b.maxT, b.minT, viewTime
from session_progress,
(select max(timestamp) as maxT, min(timestamp) as minT
from session_progress
where session_id=2374 ) b
where where session_id=2374 AND timestamp = b.maxT
就像这个想法一样,我还没有测试过它。请原谅任何错误。