LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

SQL查询中GROUP BY和DISTINCT有什么区别?

admin
2025年2月15日 8:19 本文热度 119

引言

在SQL查询中,GROUP BY和DISTINCT都是常用的关键字,它们都能实现数据去重的功能。但它们的实现原理和使用场景有很大的区别。

基本概念

DISTINCT

DISTINCT用于删除结果集中的重复行,确保每个结果只出现一次。它作用于整个选择的列组合。

GROUP BY

GROUP BY用于将具有相同值的行组合到汇总行中,通常与聚合函数(如COUNT、SUM、AVG等)一起使用。

实际案例分析

让我们通过一个具体的案例来理解它们的区别。假设我们有一个订单表(orders):

CREATE TABLE orders (
    order_id INT,
    customer_id INT,
    product_id INT,
    amount DECIMAL(10,2),
    order_date DATE
);

INSERT INTO orders VALUES
(11011100.00'2024-02-14'),
(21012200.00'2024-02-14'),
(31021150.00'2024-02-14'),
(41011300.00'2024-02-15');

使用DISTINCT的场景

如果我们想查看有哪些客户下过订单:

SELECT DISTINCT customer_id 
FROM orders;

-- 结果
customer_id
-----------
101
102

这个查询会直接返回去重后的客户ID列表。

使用GROUP BY的场景

如果我们想知道每个客户的订单总金额:

SELECT customer_id, 
       COUNT(*) as order_count,
       SUM(amount) as total_amount
FROM orders
GROUP BY customer_id;

-- 结果
customer_id  order_count  total_amount
-----------  -----------  ------------
101          3           600.00
102          1           150.00

GROUP BY不仅去除了重复,还能进行数据汇总计算。

主要区别

  1. 功能定位

    • DISTINCT:纯粹的去重操作
    • GROUP BY:分组汇总,可以配合聚合函数使用
  2. 结果集

    • DISTINCT:直接返回去重后的数据
    • GROUP BY:返回分组汇总后的数据
  3. 性能表现

    • DISTINCT:对整个结果集进行去重,通常需要排序操作
    • GROUP BY:在分组的同时进行计算,可能涉及临时表的创建
  4. 使用灵活性

    • DISTINCT:不能与聚合函数直接配合使用(除特殊情况外)
    • GROUP BY:可以配合多种聚合函数,支持复杂的分组计算

总结

  1. DISTINCT和GROUP BY虽然都能实现去重,但它们的使用场景和功能特点有明显区别。

  2. DISTINCT适合简单的去重场景,而GROUP BY更适合需要分组统计的场景。

  3. 在选择使用哪种方式时,需要考虑:

    • 业务需求是否需要分组统计
    • 性能要求
    • 结果集的预期大小
    • 是否需要使用聚合函数
  4. 合理使用索引和优化查询语句,可以显著提升查询性能。


阅读原文:原文链接


该文章在 2025/2/17 12:25:44 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved