dor*_*aav 2 sql ranking teradata ranking-functions
你好寻找帮助排名.
我正在使用SQL与Teradata合作,我正在尝试按特定组排序列表,然后按年龄排序.
例如:我想按组排名,然后只对21岁以下选定组下的那些进行排名.
但是,当我使用下面的查询时,它似乎没有考虑组中的成员,只有在它们符合case语句中的条件时才分配.
select
policy,
age,
case when age <'21' then '1'else '0' end as Under21,
case when age <'21' then dense_rank () over (order by group, age desc) else '0' end as Rank_Under_21
from Table
Run Code Online (Sandbox Code Playgroud)
您可以使用以下partition by条款:
dense_rank () over (partition by policy, case when age < 21 then 1 end
order by group, age desc)
Run Code Online (Sandbox Code Playgroud)
注意:如果age是数字字段(应该是),则不要将其与字符串进行比较:省略引号.如果age是字符串类型,则要注意与另一个字符串的比较将按字母顺序排列,因此'9'>'21'.