列表

详情


47. SQL窗口函数、如何去重

回答思路

假设table表中有字段a、b、c,现需要对字段a、b进行去重,在SQL中通常有三种方法能够实现去重的功能: 1) DISTINCT 关键字 使用DISTINCT去重的方法很简单,在查询数据时在字段前增加DISTINCT关键字既可对字段内容进行去重。如下代码将输出table表中字段a和b的组合不重复的数据: SELECT DISTINCT a,b FROM table; 2) GROUP BY关键字 使用GROUP BY进行去重的方法和DISTINCT类似,仅需在查询语句末端增加GROUP BY即可,而且能够对分组数据进行筛选。 SELECT a, b FROM table GROUP BY a, b; 3) 窗口函数 使用窗口函数进行去重时,比DISTINCT和GROUP BY稍微复杂些,可以采用窗口函数+over(partition by 去重字段)的方式。去重方式如下: -- 窗口函数+over(partition by 去重字段),其中窗口函数可采用row_number SELECT a, b FROM( SELECT *, row_number() over(partition by a, b order by c) rank_id FROM table ) A WHERE rank_id = 1;

上一题