2017-03-29 34 views
0

我有一个表像这样:获得独特的值出现在一个表中的次数

Email | Number 
a  | 0.5 
a  | 1 
a  | 1.1 
b  | 5 
b  | 3.7 

我想保留相同的表格布局,但得到的基础上,唯一的电子邮件的实例数数列中按照排名顺序:

Email | Number | RankOrder 
a  | 0.5 | 3 
a  | 1  | 2 
a  | 1.1 | 1 
b  | 7.7 | 1 
b  | 6  | 2 
+0

什么RDBMS是什么? MySQL的? – xQbert

+0

可能你有你的答案,但是你可以编辑这个问题,以便输出逻辑上跟随输入吗? –

+0

输出确实遵循输入。这是在teradata – NBC

回答

2

您可以用窗口Row_Number()做到这一点:

Select Email, Number, 
     Row_Number() Over (Partition By Email Order By Number Desc) As RankOrder 
From LikeSo; 
2

如果我理解正确的话,你想要的row_number()功能(这是大多数数据库的ANSI标准可用功能):

select email, number, 
     row_number() over (partition by email order by number desc) as rankorder 
from t; 
相关问题