是否可以通过(SQL)获取不在组中的列的函数结果?

时间:2014-10-17 10:34:58

标签: sql postgresql group-by max

我正在尝试获取课程的最后注册日期,但我想知道thar记录的 id 。由于MAX是一个函数,我必须使用 id 分组,这是我不想要的,因为结果非常不同(从每个id只有一条记录到每条记录)。

管理这样的查询的方法是什么?:

SELECT id, MAX(registration_date) AS registration_date 
FROM courses;

因为它会出错,我必须这样做才能避免它:

SELECT id, MAX(registration_date) AS registration_date 
FROM courses
GROUP BY id;

我不想要最后一个的结果。

2 个答案:

答案 0 :(得分:0)

您可以使用rank()窗口函数:

SELECT id
FROM   (SELECT id, RANK() OVER (ORDER BY registration_date DESC) AS rk
        FROM   courses)
WHERE  rk = 1

答案 1 :(得分:0)

一种方法是使用这样的子查询:

select * 
from [dbo].[Courses]
where registration_date = 
(select max(registration_date) 
from [dbo].[Courses])

但只有匹配的日期可能会返回多条记录。 如果可能,请在where子句中包含更多字段以缩小范围。