为什么DISTINCT COUNT()会返回9而不是1?

时间:2014-05-15 21:14:22

标签: sql db2 ibm-midrange

我有以下声明:

SELECT DISTINCT COUNT(Z.TITLE) AS COUNT 
FROM QMFILES.MPRLRREQDP Y, 
     QMFILES.MPRLRTYPP Z
WHERE Y.REQUEST_TYPE = Z.ID 
  AND Y.REQUEST_ID = 13033;

在此特定结果集上,如果我删除了DISTINCTCOUNT(),则结果集将返回完整相同数据的九行。如果我添加DISTINCT,我会得到一行。添加COUNT()我得到九个结果,我期待一个。我假设操作的顺序正在影响我的结果,但我怎么能解决这个问题,所以我得到了我想要的结果?

注意:这是较大的SQL语句中的子选择。

3 个答案:

答案 0 :(得分:15)

SELECT DISTINCT COUNT(Z.TITLE)计算Z.TITLE(九)值的行数。 DISTINCT是多余的,因为COUNT已经汇总了这些行。

SELECT COUNT(DISTINCT Z.TITLE)计算Z.TITLE(一)中不同值的数量。

答案 1 :(得分:3)

COUNT会产生一条新记录,其中包含SELECT语句中的项目数。 DISTINCT正在寻找COUNT的结果,毕竟这只是单个记录。

答案 2 :(得分:0)

如果你真的想要这个标题,那么它应该是

SELECT Z.Title, COUNT(Z.TITLE) AS COUNT 
FROM QMFILES.MPRLRREQDP Y, 
    QMFILES.MPRLRTYPP Z
WHERE Y.REQUEST_TYPE = Z.ID 
    AND Y.REQUEST_ID = 13033
GROUP BY Z.Title;

这会给你类似的东西

"Title 1", 9

或如果您有多个标题

"Title 1", 6
"Title 2", 2
"Title 3", 1

数字是该不同标题的计数。