【问题标题】:Redundant use of distinct in group by?重复使用不同的分组依据?
【发布时间】:2017-06-14 12:15:00
【问题描述】:

我正在查看 SAS 中的一些 SQL 查询,我遇到了以下查询结构:

SELECT distinct A, B, Sum(C) FROM Table1 GROUP BY A, B;

我想知道它是否严格等同于:

SELECT A, B, Sum(C) FROM Table1 GROUP BY A, B;

或者,如果我在输出或处理计算的方式中遗漏了细微差别

【问题讨论】:

  • 这两个查询的结果是什么?
  • 两者产生相同的结果。但是distinct 是多余的,因为 A+B 组已经是唯一的。也许优化器注意到了。
  • 您没有遗漏任何细微差别, distinct 子句是多余的,应该删除。

标签: sql group-by sas distinct


【解决方案1】:

这两个查询是等价的。

一般来说

SELECT DISTINCT a, b, c
FROM <something>

等价于

SELECT a, b, c
FROM <something>
GROUP BY a, b, c

在您的情况下,&lt;something&gt; 恰好是 GROUP BY 查询的结果,该查询具有不同的列 AB。这足以确保三元组 A, B, SUM(C) 也将是唯一的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-20
    • 1970-01-01
    相关资源
    最近更新 更多