如何在row_number(postgresql)上使用where子句

时间:2018-12-05 10:09:41

标签: sql postgresql

select (select  sum(points) 
        from    points a 
        where   a.userid=userinfo.id 
            and userinfo.type='customer') as customerpoints
        ,* 
from users userinfo
left outer join points pd on pd.userid=userinfo.id 
where  type='customer'
and ( SELECT SUM(points)
      FROM  points a
      WHERE a.userid = userinfo.id
        AND userinfo.type = 'customer')>0                                                                                    
order by customerpoints asc
        ,id asc limit 50

我想在上述查询中使用row_number,并在where子句中使用该行号

1 个答案:

答案 0 :(得分:0)

在没有看到源数据样本的情况下,很难跟踪困扰您的错误。 以下示例演示了按两列进行排序:

select x.*
from (values ('Leo', 6), ('Mickey', 5), ('Don', 7), ('Raf', 6)) x(name, score)
order by 2,1

返回

name    score
Mickey  5
Leo 6
Raf 6
Don 7

您可能会注意到,由于排序字段的不同,“ Don”在得分最低的列表的底部,尽管按字母顺序他必须在得分的顶部,而“ Leo”和“ Raf”的得分却是相同的按字母顺序排序。