在一次查询中,只统计一种类型的记录,统计全部记录



我有一个这样的表:

User        Length WHO     Bay
DOMISLOVICM 69,272 1061840 3
GASPARICM   58,608 1060570 5
GASPARICM   1,3    1060571 3
...

我想计算在每个不同的bay中有多少条记录的长度大于5。为此,我编写了以下查询:

SELECT Bay, Count(*) as Occurrences FROM Table
WHERE Length>5 group by Bay;

这是完美的,在上面的例子中它将返回:

Bay Occurrences
3   1
5   1

现在我被要求扩展查询,以包括每个bay的表中每个bay的总记录数,包括长度不超过5的记录数。示例表的结果应该是:

Bay Occurrences Totals
3   1           2
5   1           1

因为Bay 3总共有3条记录,Bay 5有1条记录。如何扩展查询?如果我使用where子句将记录分隔为长度超过5的记录,我就不能使用count(*)来计算整个记录…任何建议吗?

试试这个

编辑:这是SQL Server语法,如果它不工作在你的DB让我知道。

SELECT Bay, 
    SUM(CASE WHEN Length > 5 THEN 1 END) as Occurrences,
    COUNT(*) as Totals
FROM Table
GROUP BY Bay;

EDIT:就像@HansUp在评论中建议的那样,完成此操作的正确访问语法是SUM(IIF([Length] > 5, 1, 0))

最新更新