Sql 在查询中统计一种类型的记录和记录总数
我有一张这样的桌子:Sql 在查询中统计一种类型的记录和记录总数,sql,database,ms-access,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
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
因为我一共有3条记录在3号区,1条记录在5号区。
如何扩展查询?
如果我使用where子句将记录分隔为长度超过5的记录,我不能使用count(*)来计算整个记录。。。有什么建议吗?试试这个
编辑:这是SQL Server语法,如果在数据库中不起作用,请告诉我
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))
谢谢你的建议。数据库是Access(实际上我正在对从SAP提取的表运行analisys),您的查询会出现错误,因为SUM子句中缺少运算符;在Access中,使用IIf
而不是CASE WHEN
。试着这样做:Sum(IIf([Length]>5,1,0))作为事件出现
Like charm!这一个工作得很好,我必须研究聚合函数…:)