【问题标题】:Select count(*) from result query从结果查询中选择 count(*)
【发布时间】:2012-11-30 00:51:38
【问题描述】:

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

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

这是我的结果:

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

现在我必须计算第一次查询的结果!

Expected result: 4 

【问题讨论】:

  • 你的表中有列吗?您想按 SID 计算 SID 组吗?嗯.... +1 到@bluefeet 我也猜这是那个日期的(SID)的最大计数......但我猜他的评论已经消失了......
  • 我要数行数!计数(2,3,4,3)

标签: sql sql-server select


【解决方案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)

应该有效

【讨论】:

    【解决方案2】:

    这会计算内部查询的行数:

    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 在网络上尝试 SQLFIDDLE ;)。
    • 我需要在命令末尾添加列和别名吗?
    【解决方案3】:

    您可以将查询包装在另一个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 with Demo

    为了使其工作,count(SID) 需要一个列别名,并且您必须为子查询本身提供一个别名。

    【讨论】:

    • 谁能解释你为什么需要别名?我在没有它们的情况下尝试过,但它没有用,但考虑到您从未在查询中使用它们(在本例中为“tot”和“src”),对我来说并不明显需要它们。
    • @GarrettDisco 由于您使用的是子查询,因此子查询中的每一列都需要有一个名称,也就是别名。 SQL Server 还需要子查询的别名。
    猜你喜欢
    • 2020-12-21
    • 2012-01-03
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 2010-10-18
    • 2011-11-10
    • 2012-07-13
    • 1970-01-01
    相关资源
    最近更新 更多