我有一个表Handset
。有一些重复的imei,我必须按照这些要求选择一个imei:
当找到唯一的imei时,就选择
max(revenue)
IMEI MSISDN REVENUE DATA_CAPABLE
35622200000001 4282336700001 1000 Y
35622200000001 4282336700002 2000 N
35622200000002 4282336700003 3000 Y
35622200000003 4282336700004 4000 Y
35622200000004 4282336700005 5000 Y
35622200000005 4282336700006 6000 Y
35622200000005 4282336700007 7000 Y
35622200000006 4282336700008 8000 Y
35622200000007 4282336700009 9000 N
35622200000007 4282336700010 1100 N
对于这种情况,我很困惑将
CASE WHEN and HAVING COUNT(*)>1
组合在一起。师父的任何帮助都非常感谢
最佳答案
ROW_NUMBER就是这种情况。
假设data_capable
的选项是Y
和N
:
select *
from tab
qualify
row_number()
over (partition by imei -- for each imei
order by data_capable desc -- 'Y' first
,revenue desc -- max(revenue) first
) = 1
关于sql - Teradata的案例和拥有的数量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30906719/