一、简要介绍
- 样例数据:
mdn | imei | imsi | vprovId |
---|---|---|---|
1064948930129 | 8670120344055714 | 460111128580323 | 123 |
1064948930129 | 8670120344055714 | 460111128580323 | 123 |
1064948605404 | 8666660207679900 | 460110662972417 | 234 |
- 需求:表数据按照手机号去除重复,每个手机号只保留一条记录
二、HSQL编写思路
- 使用ROW_NUMBER() OVER函数的基本用法
语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)
简单的说row_number()从1开始,为每一个分组记录返回一个数字,这里的ROW_NUMBER() OVER (ORDER BY visit_province_id asc) 是先把visit_province_id列升序,再为升序以后的每条mdn记录返回一个序号。
三、HSQL书写
select *
from(
select *,row_number() over (partition by mdn order by vprovId asc ) num from aa_country_analysis
) t
where t.num=1;
先通过row_number()函数按照手机号进行分组,组内按照省份id进行升序,然后组内相同mdn记录从1开始编号…n。然后最后每个mdn分组下只保留第一条记录。
mdn | imei | imsi | vprovId |
---|---|---|---|
1064948930129 | 8670120344055714 | 460111128580323 | 123 |
1064948605404 | 8666660207679900 | 460110662972417 | 234 |