SQL去重分组groupby
时间: 2025-01-31 11:43:03 浏览: 53
### SQL 去重与分组 `GROUP BY` 的使用方法
在处理数据库中的数据时,常常需要去除重复记录并对特定字段进行分组汇总。以下是几种实现方式:
#### 方法一:使用 `DISTINCT`
当只需要获取某一列不重复的数据时,可以采用 `SELECT DISTINCT` 语句来完成这一目标[^3]。
```sql
SELECT DISTINCT column_name
FROM table_name;
```
此命令会返回指定列中所有的唯一值组合。
#### 方法二:利用 `GROUP BY` 进行分组查询
对于更复杂的场景,则可以通过 `GROUP BY` 子句来进行多维度的聚合计算。它允许按照一个或多个字段对结果集进行分区,并配合聚集函数(如COUNT(), SUM()等)一起工作以获得每一分区内的统计数据[^2]。
```sql
SELECT department, COUNT(*) AS employee_count
FROM employees
WHERE salary > 50000
GROUP BY department;
```
上述例子展示了按部门分类统计薪资超过五万员工数量的过程。
#### 方法三:结合窗口函数 `ROW_NUMBER()` 实现高级去重逻辑
除了传统的 `DISTINCT` 和 `GROUP BY` 外,在某些情况下可能还需要更加灵活的方式——即基于一定规则选取某类记录作为代表。这时就可以考虑应用窗口函数 `ROW_NUMBER()` 来达成目的。
```sql
WITH RankedData AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY email ORDER BY id DESC) rn
FROM users
)
DELETE FROM users u USING RankedData r
WHERE u.id = r.id AND r.rn > 1;
```
这段代码片段实现了保留最新注册邮箱地址对应的用户信息的同时删除其余具有相同电子邮件的老账户的功能。
阅读全文
相关推荐


















