指定列去重

table task

taskiduseridstatustasknumber
11231D202308
21231D202308
31231D202309
42231D202309

PARTITION BY : 在分区内(如tasknumber列和userid列)进行计算
ROW_NUMBER() OVER :从1开始,为每条分组记录返回一个数字

//给相同(tasknumber, userid)的记录编号
SELECT taskid, tasknumber, userid, 
		ROW_NUMBER() OVER (PARTITION BY tasknumber, userid ORDER BY tasknumber ASC) AS rn
FROM task t

查询结果

taskidtasknumberuseridrn
1D2023081231
2D2023081232
3D2023091231
4D2023092231

tasknumber和userid相同的task,只显示其中一个的taskid:

WITH temp_table AS (
	SELECT taskid, tasknumber, userid, status,
		ROW_NUMBER() OVER (PARTITION BY tasknumber, userid ORDER BY tasknumber) AS rn
	FROM task t 
) SELECT tt.taskid 
FROM temp_table tt INNER JOIN user_ u ON tt.userid = u.userid 
WHERE tt.rn = 1 AND DATE(u.submissiondate) >= '2023-08-01' AND DATE(u.submissiondate) <= '2023-08-31' AND 
		tt.status = 1
taskid
1
3
4

参考链接:
SQL:数据去重的三种方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值