Postgresql 仅返回RANK()之后的最低值

Postgresql 仅返回RANK()之后的最低值,postgresql,window-functions,rank,Postgresql,Window Functions,Rank,我使用以下方法创建了某些“案例”: 现在我需要在每个case_id中创建等级,其中名称只能出现一次,最低等级应该分配给最低的some_值 以下是数据示例: 以及所需的输出: Select * from ( Select Name, A, B, some_value, case_id , ROWNO() over (partition by case_id, Name order by some_value) as R1 from ( Select

我使用以下方法创建了某些“案例”:

现在我需要在每个case_id中创建等级,其中名称只能出现一次,最低等级应该分配给最低的some_值

以下是数据示例:

以及所需的输出:

Select * from ( 

    Select Name, A, B, some_value, case_id 
    , ROWNO() over (partition by case_id, Name order by some_value) as R1
    from (
        Select 'SF' as Name, 'y' as A, 'n' as B, 120 as some_value, 1 as case_id
        union all Select 'NY' as Name, 'y' as A, 'n' as B, 150 as some_value, 1 as case_id
        union all Select 'LA' as Name, 'y' as A, 'n' as B, 155 as some_value, 1 as case_id
        union all Select 'SF' as Name, 'y' as A, 'n' as B, 160 as some_value, 1 as case_id
        union all Select 'SF' as Name, 'n' as A, 'y' as B, 110 as some_value, 5 as case_id
        union all Select 'NY' as Name, 'n' as A, 'y' as B, 120 as some_value, 5 as case_id
        union all Select 'LA' as Name, 'n' as A, 'y' as B, 125 as some_value, 5 as case_id
        union all Select 'LA' as Name, 'n' as A, 'y' as B, 140 as some_value, 5 as case_id
        union all Select 'NY' as Name, 'n' as A, 'y' as B, 155 as some_value, 5 as case_id
    ) testdata

    ) data
Where R1 = 1
order by case_id, some_value

您的意思是您想要最低的
案例id
值?在这里,示例数据和预期输出将非常有用。
Select * from ( 

    Select Name, A, B, some_value, case_id 
    , ROWNO() over (partition by case_id, Name order by some_value) as R1
    from (
        Select 'SF' as Name, 'y' as A, 'n' as B, 120 as some_value, 1 as case_id
        union all Select 'NY' as Name, 'y' as A, 'n' as B, 150 as some_value, 1 as case_id
        union all Select 'LA' as Name, 'y' as A, 'n' as B, 155 as some_value, 1 as case_id
        union all Select 'SF' as Name, 'y' as A, 'n' as B, 160 as some_value, 1 as case_id
        union all Select 'SF' as Name, 'n' as A, 'y' as B, 110 as some_value, 5 as case_id
        union all Select 'NY' as Name, 'n' as A, 'y' as B, 120 as some_value, 5 as case_id
        union all Select 'LA' as Name, 'n' as A, 'y' as B, 125 as some_value, 5 as case_id
        union all Select 'LA' as Name, 'n' as A, 'y' as B, 140 as some_value, 5 as case_id
        union all Select 'NY' as Name, 'n' as A, 'y' as B, 155 as some_value, 5 as case_id
    ) testdata

    ) data
Where R1 = 1
order by case_id, some_value