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