我有一张这样的表:
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(*)来计算整体记录...任何建议?
答案 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))
。