SQL聚合函数默认包含重复值,COUNT(*)统计所有行,COUNT(列名)统计非NULL值,COUNT(DISTINCT 列名)去重统计,SUM、AVG等配合DISTINCT可对唯一值计算,需显式使用DISTINCT避免重复计数。
SQL 聚合函数在处理重复数据时的行为取决于具体使用的函数和是否结合去重关键字。默认情况下,大多数聚合函数会包含重复值进行计算,但可以通过 DISTINCT 关键字排除重复项。
以下是几个常用聚合函数对重复值的处理逻辑:
当需要排除重复数据时,应显式使用 DISTINCT 关键字:
COUNT(DISTINCT customer_id)
SUM(DISTINCT sale_amount)(注意:这可能不符合业务逻辑,需谨慎使用)
假设有一张订单表 orders,包含字段 order_id, customer_id, amount:
COUNT(*)
COUNT(DISTINCT customer_id)
SUM(amount)
AVG(DISTINCT amount)
包含重复的,只有加上 DISTINCT 才会去重。