Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在查询中统计一种类型的记录和记录总数_Sql_Database_Ms Access - Fatal编程技术网

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!这一个工作得很好,我必须研究聚合函数…:)