表去重
测试表:
使用Distinct:
+ 去除某列相同的数据,或者某几列都相同的数据。 + 根据单个字段去重,能精确去重; + 作用在多个字段时,只有当这几个字段的完全相同时,才能去重; + 关键字distinct只能放在SQL语句中的第一个,才会起作用1 | // 去除id,class,score都重复才去除 |
1 | SELECT DISTINCT class FROM drc_student; |
2.使用groupby
- 使用groupby()会直接对括号里面的列去重
- 使用groupby的时候,select指定的字段要么就要包含在Group By语句的后面,作为分组的依据;要么就要被包含在聚合函数中。也就是这里的select后面查询的列只能出现在group中,其他列作为聚合函数中的参数
3.使用窗口函数:
+ 窗口函数主要是用来根据某个字段去重,但是还有查询其他列1 | SELECT column1, column2, ... |
窗口函数:
:::info
ROW_NUMBER() OVER (PARTITION BY column_to_deduplicate ORDER BY some_column) AS row_num
:::
这里的PARTITION BY后面跟的是窗口, some_column表示窗口后的数据根据哪列排序
- 窗口函数可以说是,先分组,后把同一组的数据中的其他列按照规则排序,最后生成多余的列
1 | -- 窗口函数 :根据班级分组,班级内按照分数排序 |
1 | --查询同班中不同的分数 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 山麋一笑!
评论