计算一种类型的记录并在查询中记录整体

时间:2014-03-25 17:12:54

标签: sql database ms-access

我有一张这样的表:

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

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

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

这很完美,在上面的例子中它会返回:

Bay Occurrences
3   1
5   1

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

Bay Occurrences Totals
3   1           2
5   1           1

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

1 个答案:

答案 0 :(得分:2)

试试这个

编辑:这是SQL Server语法,如果它对您的数据库不起作用,请告诉我。

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

编辑:与评论中建议的@HansUp一样,正确的Access语法是SUM(IIF([Length] > 5, 1, 0))