所有值的总和但不同的另一列的组

时间:2016-03-21 15:31:22

标签: oracle

我对 distinct 参数有疑问。 (或者更常见的是选择参数)

我想按一个不同的列进行分组,但在另一个总和列中,我需要对所有值求和。首先,我想使用以下查询。

SELECT ZIP5,  date,   COUNT(ID), SUM(WEIGHT)

FROM ops_owner.track_mail_item

GROUP BY ZIP5, distinct (TRUNC(DATE))

PL / SQL开发返回它缺少表达式。我知道这可能是因为我在选择句子中没有使用相同的(TRUNC(DATE))。

但是,我确实想要ID和Sum将添加所有值,即使日期是重复的。 恐怕选择句中的不同(TRUNC(DATE))会删除那些重复记录,因此计数/总和将低于我想要的数。

任何人都可以告诉我是否可以使用以下查询来获取不同的日期以及包括重复在内的所有总和和计数值吗?

SELECT ZIP5,  distinct (TRUNC(DATE)),   COUNT(ID), SUM(WEIGHT)

FROM ops_owner.track_mail_item

GROUP BY ZIP5, distinct (TRUNC(DATE))

2 个答案:

答案 0 :(得分:2)

DISTINCT对结果集中的所有列进行操作。

您的SQL中不需要DISTINCT - GROUP BY会将具有相同ZIP5, TRUNC(DATE)的所有行合并为一个。

SELECT ZIP5,  TRUNC(DATE),  COUNT(ID), SUM(WEIGHT)
  FROM ops_owner.track_mail_item
 GROUP BY ZIP5, TRUNC(DATE)

PS: 我希望你没有真正命名你的专栏DATE,因为它是一个保留词。

答案 1 :(得分:1)

您的查询应该是这样的:

SELECT ZIP5, TRUNC(DATE), COUNT(ID), SUM(WEIGHT)
FROM ops_owner.track_mail_item

GROUP BY ZIP5, TRUNC(DATE)

这将计算所有内容,但结果不会显示重复项,因为同一个ZIP和DATE的所有计数和总和将被组合在一起。