从结果查询中选择计数(*)

57

我需要你的帮助,这是我的SQL查询:

select count(SID) 
from Test 
where Date = '2012-12-10' 
group by SID

这是我的结果:

|2|
|3|
|4|
|3|

现在我需要从第一个查询中计算结果!

Expected result: 4 

1
你的表中有任何列吗?你想按SID分组计数吗?嗯... +1 给 @bluefeet,我也猜测这是那个日期的 (SID) 的最大计数... 但是我猜他的评论已经消失了... - bonCodigo
1
我必须计算行数!count(2,3,4,3) - Butters
3个回答

95

你可以将你的查询语句包裹在另一个 SELECT 中:

select count(*)
from
(
  select count(SID) tot  -- add alias
  from Test 
  where Date = '2012-12-10' 
  group by SID
) src;  -- add alias

请参见带演示的SQL Fiddle

为让其正常运作,count(SID)需要一个列别名,你还需为子查询本身提供一个别名。


8
有人能解释一下为什么需要使用别名吗?我尝试过不使用它们,但是查询没有成功,但是对于我来说,考虑到你从未在查询中使用它们(在这种情况下是'tot'和'src'),并不明显需要它们。 - Garrett Disco
3
由于您正在使用子查询,子查询中的每个列都需要一个名称,也称为别名。SQL Server还要求子查询必须有一个别名。 - Taryn

9

这将统计内部查询的行数:

select count(*) from (
    select count(SID) 
    from Test 
    where Date = '2012-12-10' 
    group by SID
) t

然而,在这种情况下,其效果与这种情况相同:
select count(distinct SID) from Test where Date = '2012-12-10'

@SigiAnonym,我没有SQL Server进行测试。但是更新的版本可以工作吗? - dan1111
3
尝试在网上使用 SQLFIDDLE 进行操作。 - bonCodigo
我需要在命令和别名的末尾添加列吗? - Nzui Manto

1

select count(*) from(select count(SID) from Test where Date = '2012-12-10' group by SID)select count(*) from(select count(SID) from Test where Date = '2012-12-10' group by SID)

应该可以工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接