SQL如果有计数子句,则区别不能工作
问题描述:
我遇到了我的sql查询问题(Select distinct did not work)。SQL如果有计数子句,则区别不能工作
我的SQL是:
select distinct
count(T2.Column1)
from Table1 t2
where T2.Column1='2017-05-210'
实际列1的数据只有3个数据, 但输出
注意: - 列1的数据是具有1与许多情况Column2
以下是实际数据:
Column 1 Column 2
1 A
1 B
1 C
1 D
2 A
2 B
2 C
2 D
3 A
3 B
3 C
3 D
任何人都可以帮助我吗? 真的很感谢您的关注。
谢谢!
答
你想算不同的值,所以做count(distinct)
:(。但是,您的样本数据和查询的数据/列不匹配)
select count(distinct T2.Column1)
from Table1 t2
where T2.Column1='2017-05-210'
+0
非常感谢你jarlh, 你的代码工作, 我只是意识到,我需要在不同的括号“不同”,所以使这一列更具体的计数。 –
答
你的样本数据,结果和查询不匹配。
然而,你的查询会是:
- 找到所有记录与
column1 = '2017-05-210'
。 - 对所有这些记录进行计数,其中
column1
不为空(对于所有这些记录均如此,如column1 = '2017-05-210'
)。 - 这会产生一个数字(一行一列)。但是,您还要用
DISTINCT
表示您想从结果行中删除任何重复项。只有一行可以没有重复,所以这里的功能是多余的。
所以想想你真正想要的是什么。您可以用COUNT(DISTINCT column)
来计算不同的值(即忽略重复的计数),但COUNT(DISTINCT column1)
当然会返回1,因为您只需要寻找一个的值,即'2017-05-210'
(或者在没有与此值匹配的记录的情况下为零)。
正如我们的答案中所述,您的数据,结果和查询不匹配。此外,您显示的数据是** m:n **,而不是1:n(第1列中的值可以与许多第2列值配对,例如1A,1B,1C和1D,并且第2列中的值可以与许多列1值,例如1A,2A,3A)。 –