Sql Distinct结果表的计数没有条件

时间:2010-03-24 13:56:12

标签: sql

我想计算从此代码生成的结果表中的帐户数。这样,我知道有多少人一次都喜欢蓝色。

Select Distinct PEOPLE.FullName, PEOPLE.FavColor From PEOPLE
Where FavColor='Blue'

让我们说这是一个历史记录,说明人们在被问到时所说的最喜欢的颜色,所以如果再次在很晚的时候再次询问,可能会有多个相同全名的记录;因此不同。

我使用的代码可能无法在您的答案中重复使用,因此请随意使用您认为可以使用的代码。我确信我使用declare和if语句找到了我的问题的可能解决方案但是我丢失了那个页面......所以我没有解决方案。但是,我认为有一种方法可以在不使用条件的情况下完成它,而这正是我所要求的,而不是。感谢。

编辑:我的问题是:从上面的代码中,有没有办法计算结果表中的帐户数量?

5 个答案:

答案 0 :(得分:1)

如果我理解你的要求是正确的(一次有多少人喜欢蓝色?),试试这个:

select count(*)
from PEOPLE
where FavColor = 'Blue'
group by FullName

如果您的问题实际上是,如何计算任何选择查询的结果?,您可以这样做:

假设您的原始查询是:

select MyColumn
from MyTable
where MyOtherColumn = 26

您可以将其包装在另一个查询中以获取计数

select count(*)
from (
    select MyColumn
    from MyTable
    where MyOtherColumn = 26
) a

答案 1 :(得分:0)

我认为这可能就是你想要的。

选择Count(*)为'NumberOfPeople' 从 ( 从PEOPLE中选择Distinct PEOPLE.FullName,PEOPLE.FavColor 哪里FavColor ='蓝' )一个

答案 2 :(得分:0)

Select Count (Distinct PEOPLE.FullName)  
From PEOPLE  
Where FavColor='Blue'

答案 3 :(得分:0)

您是说要生成没有WHERE子句的计数?

这个怎么样?

SELECT
    count(*)
FROM
    people
    INNER JOIN (SELECT FavColor = 'Blue') col ON col.FavColor = people.FavColor

编辑:好的,我现在看到了你想要的东西。

您只需将查询包装在SELECT count(*) FROM ( <your-query-goes-here> )

答案 4 :(得分:0)

如果同一个人有多个答案,也就是说,他们最喜欢的颜色会随着时间的推移而改变 - 导致多个颜色,有些重复,对于同一个人(也就是“帐户”),然后找到最喜欢的帐户数量颜色是/是蓝色(甲骨文):

选择计数(*)   从(选择FULLNAME           来自人民          其中FAVCOLOR ='蓝色'        分组由FULLNAME);