我有下表(table1
):
f_name | email
---------|---------------------
john | john123@hotmail.com
peter | peter456@gmail.com
johnny | john123@hotmail.com
peter8 | peter456@gmail.com
...
我想为同一个电子邮件值列添加Group
号码:
f_name | email |Group |
---------|---------------------|------|
john | john123@hotmail.com | 1 |
peter | peter456@gmail.com | 2 |
johnny | john123@hotmail.com | 1 |
peter8 | peter456@gmail.com | 2 |
...
我使用以下内容:
SELECT
email,
s_index = ROW_NUMBER() OVER(PARTITION BY [email] ORDER BY [email]),
t_index = DENSE_RANK() OVER (ORDER BY [email])
FROM dbo.table1
这是在Oracle中为大数据执行此操作的最佳方式吗?如何在Impala中完成?
答案 0 :(得分:1)
可能很慢,也许不适用;但如果您正在寻找dense_rank()的替代方案......
如果您的表格除了f_name
和email
- 还有一些唯一ID,那么可以将每个email
- 组的最小ID作为{{1}的值}。当然,groupId必须与id具有相同的类型,并且groupId
的值不连续也无关紧要,即它们会有间隙:
groupId