首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取聚合查询中扫描的记录数

获取聚合查询中扫描的记录数
EN

Stack Overflow用户
提问于 2010-05-27 02:31:43
回答 2查看 1.1K关注 0票数 0

我的应用程序使用一般形式执行许多查询:

代码语言:javascript
复制
SELECT <aggregate-functions>
FROM <table-name>
WHERE <where-clause>
GROUP BY <group-by column list>

我想知道有多少记录参与了聚合结果集(换句话说,有多少记录与WHERE子句中的条件匹配),因为SELECT子句和GROUP-BY子句中的聚合函数都是隐藏的。我知道我可以使用相同的WHERE子句执行一个简单的SELECT COUNT(*)来获得这个数字,但是如果可能的话,我希望避免第二次查询。是否有SQL Server特性/函数/等可以在不进行其他查询的情况下生成该值?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-27 02:50:36

一个简单的解决方案是一个子选择:

代码语言:javascript
复制
Select ...
    , ( Select Count(*) 
        From Table 
        Where ...) As TotalCount
From Table
Where ...
Group By ...

如果您使用的是SQL Server 2005或更高版本,则可以执行以下操作:

代码语言:javascript
复制
With RankedItems As
    (
    Select Col1
        , Row_Number() Over ( Order By Col1 Asc, Col2 Asc... ) As Num
        , Row_Number() Over ( Order By Col1 Desc, Col2 Desc ) As RevNum
    From Table
    Where ...
    )
Select Col1, Min(Num + RevNum - 1) As TotalCount
From RankedItems
Group By Col1
票数 1
EN

Stack Overflow用户

发布于 2010-05-27 02:52:30

您可以添加一些涉及聚合的任意值的计数,甚至可以这样做

代码语言:javascript
复制
SELECT  x.name, 
        y.name, 
        z.name, 
        AVG(x.tacos) AS average_tacos, 
        SUM(1) AS aggregated_row_count
FROM ....
WHERE ...
GROUP BY x.name, y.name, z.name
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2915726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档