Sql 为什么DISTINCT COUNT()返回9而不是1?
我有以下声明:Sql 为什么DISTINCT COUNT()返回9而不是1?,sql,db2,ibm-midrange,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; 在这个特定的结果集中,如果我删除了DISTINCT和COUNT(),结果集将返回九行完全相同的数据。如果我添加独立的,我会得到一行。添加COUNT()我得到的结果是九,而我期望的结
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;
在这个特定的结果集中,如果我删除了DISTINCT
和COUNT()
,结果集将返回九行完全相同的数据。如果我添加独立的
,我会得到一行。添加COUNT()
我得到的结果是九,而我期望的结果是一。我假设操作的顺序会影响我的结果,但是我如何解决这个问题才能得到我想要的结果呢
注意:这是较大SQL语句中的一个子选择。
SELECT DISTINCT COUNT(Z.TITLE)
使用Z.TITLE
(九)的值对行数进行计数。DISTINCT
是多余的,因为COUNT
已经聚合了行
SELECT COUNT(DISTINCT Z.TITLE)
统计Z.TITLE
(一个)中不同值的数量。该计数将生成一条新记录,其中包含SELECT语句中的项数。DISTINCT正在查找计数结果,毕竟这只是一条记录。如果您确实想要标题,那么它应该是
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
这个数字就是那个不同头衔的计数。我想count(distinct Z.title)会做你想做的事。我不知道你能做到。早上我会试试。正如我所说,这是一个更大的SQL语句的一部分。这只是其中的一个选择。我标出了我问题的答案。