【问题标题】:SAS SQL SELECT DISTINCT WITH GROUP BYSAS SQL SELECT DISTINCT WITH GROUP BY
【发布时间】:2020-11-05 00:29:16
【问题描述】:

如果 SQL 代码如下?

Proc SQL;
    SELECT DISTINCT ID,SUM(AMOUNT) AS M,SUM(NO) AS CNT
    FROM CUSTOMER_LIST
    GROUP BY ID
    ORDER BY CNT DESC;
QUIT;

DISTINCTGROUP BY 一起使用。使用此组合时会出现任何可能的错误或DISTINCT 只是一个多余的词?

谢谢~

【问题讨论】:

  • 任何可能的错误都会发生 ... 为什么要问我们这个?你收到错误了吗?
  • 是的,什么是 ID?例如,ID 可以是客户的任何 id 代码,然后还有另一个字段 typeofid,在这种情况下我可以有 ID = 1,typeofid = passport,然后 id=1,typeofid=driverslicense,我需要更多详细信息
  • 这么说,distinct不是多余的词,

标签: sql select group-by sas distinct


【解决方案1】:

DISTINCTGROUP BY 一起使用。使用此组合时会出现任何可能的错误吗?或者DISTINCT 只是一个多余的词?

这不会出错,但这只是不必要的冗余。 GROUP BY ID 保证每个 ID 只会出现在结果集中的一行中。在此处添加 DISTINCT 没有任何好处 - 它使查询的意图更难理解。

另一方面,在某些情况下,您可以使用 DISTINCT 而不使用 GROUP BY:通常当您想要对一组列进行重复数据删除但不需要使用聚合函数时(SUM()COUNT() ...)。

【讨论】:

    【解决方案2】:
    SELECT ID,SUM(AMOUNT) AS M,SUM(NO) AS CNT
    FROM CUSTOMER_LIST
    GROUP BY ID
    ORDER BY CNT DESC;
    

    我们已经按 id 分组,所以不需要不同的 id

    【讨论】:

      猜你喜欢
      • 2014-11-07
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-30
      相关资源
      最近更新 更多