在 SQL 中,DISTINCT
关键字用于返回唯一不同的值。当它与聚合函数(如 COUNT、SUM、AVG 等)一起使用时,它会对这些函数中的每个唯一值进行计数或计算。
以下是一些使用 DISTINCT
与聚合函数的示例:
- COUNT(DISTINCT column_name): 返回指定列中唯一值的数量。
SELECT COUNT(DISTINCT column_name) FROM table_name;
例如,如果你有一个名为 orders
的表,其中包含 customer_id
列,并且你想知道有多少不同的客户下了订单,你可以这样写:
SELECT COUNT(DISTINCT customer_id) FROM orders;
- SUM(DISTINCT column_name): 返回指定列中唯一值的总和。
SELECT SUM(DISTINCT column_name) FROM table_name;
例如,如果你有一个名为 orders
的表,其中包含 order_amount
列,并且你想知道所有不同订单金额的总和,你可以这样写:
SELECT SUM(DISTINCT order_amount) FROM orders;
- AVG(DISTINCT column_name): 返回指定列中唯一值的平均值。但需要注意的是,并非所有数据库系统都支持
AVG(DISTINCT ...)
的语法。在这种情况下,你可能需要使用子查询或其他方法来计算平均值。
例如,在 MySQL 中,你可以这样计算不同订单金额的平均值:
SELECT AVG(order_amount) FROM (SELECT DISTINCT order_amount FROM orders) AS subquery;
- 其他聚合函数: 一些其他的聚合函数也可能与
DISTINCT
一起使用,尽管它们的用法可能因数据库系统而异。在使用之前,建议查阅特定数据库系统的文档。
需要注意的是,使用 DISTINCT
与聚合函数时,查询的性能可能会受到影响,特别是在处理大型数据集时。因此,在进行优化时,请考虑数据的分布和查询计划。