sql - 是否可以使用不在分组依据(SQL)中的列获得函数结果?

标签 sql postgresql group-by max

我想获取类(class)的最后注册日期,但我想知道记录的 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;

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

最佳答案

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

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

关于sql - 是否可以使用不在分组依据(SQL)中的列获得函数结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26423162/

相关文章:

sql - 无法计算用于较大 PostgreSQL 查询输出列的 CTE 子查询输出之间的差异

Mysql 3表,多个计数分组,但卡住了

mysql - 用于显示唯一值的 SQL 语句

c# - 带有选择非重复计数的 EF Core GroupBy

python - 如何在postgres中使用python插入元组数据

mysql - 如何在sql where子句中实现 'if not-then'之类的东西

C# linq 多次分组

python psycopg2 条件插入语句

sql - 如何调整SQL LIKE 功能?