返回 10 个具有复杂条件的值的查询



我现在正在编写一个非常复杂的查询,我现在面临着一个我无法解决的问题。

我有一个名为 tbl 的表,有 2 列: movie_id,等级 (整数(, (喜欢\不喜欢\空(

我需要编写一个查询来返回前 10 部电影 拥有最多的赞数。 (如果喜欢相等,则需要按升序排序movie_id(

边缘情况:如果排名="LIKE"的电影少于10部 (假设只有 7 个(那么我需要返回按喜欢数量排序的 7 个movie_id和按movie_id排序的另外 3 个movies_id (排名值中是否有"不喜欢"或 NULL 并不重要(

如果表上没有 10 部电影,那么我需要返回表中的电影(以与之前解释的方式相同,也就是说,首先我需要返回按"LIKES"数量排序的电影,然后返回按movie_id排序的其余电影(

有人可以帮我吗?

谢谢!

我认为这符合您的描述:

select t.*
from tbl t
order by ( (ranktype = 'like')::int ) desc,
rank desc
fetch first 10 rows only;

最新更新