SELECT id, author_id, max(result_score) as maxscore
FROM submissions
WHERE challenge_id = 10
GROUP BY author_id
ORDER BY maxscore DESC, created_at ASC
此查询从具有最高分数并且最早创建的每个作者获取提交(一个)。最后,我们最终应该提交有序的提交作品,每个作者一个,所有作者都按照maxscore和created_at排序。SQL - 从每个表中选择最大值,按所述最大值排序,然后通过created_at
这在SQLite3中完美运行,但它在PostgreSQL上编译失败,因为它更严格。 PostgreSQL要求id
要么通过group by子句使用,要么使用某种聚合函数。
我尝试了各种方法,使用DISTINCT ON
或HAVING
,但无法使其工作。这种查询是否可行?如果是,那么在这里实现我想要的方式的方法是什么?
这是真的,这工作,但不保留我原来的查询中的逻辑。 这不会对它们进行正确排序,我们可以在结果中包含#1行,它没有最大'result_score'和最小'created_at',而是最大'author_id' – Nether
@Nether。 。 。它所做的就是*完全*问题中所描述的内容:“该查询从具有最高分数并且最早创建的每个作者获得提交。” –
对不起,我不清楚 – Nether