Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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 计数不同ID_Sql_Sql Server_Count - Fatal编程技术网

Sql 计数不同ID

Sql 计数不同ID,sql,sql-server,count,Sql,Sql Server,Count,我试图计算表的ID,其中它的最后状态不等于“调用” 表1 ╔═════════╦════════╦══════════╗ ║ q_log_id║ q_id║ q_状态║ ╠═════════╬════════╬══════════╣ ║ 1.║ 1.║ 等待║ ║ 2.║ 1.║ 等待║ ║ 3.║ 1.║ 打电话║ ║ 4.║ 2.║ 等待║ ║ 4.║ 2.║ 等待║ ║ 5.║ 3.║ 等待║ ║ 5.║ 3.║ 等待║

我试图计算表的ID,其中它的最后状态不等于“调用”

表1 ╔═════════╦════════╦══════════╗ ║ q_log_id║ q_id║ q_状态║ ╠═════════╬════════╬══════════╣ ║ 1.║ 1.║ 等待║ ║ 2.║ 1.║ 等待║ ║ 3.║ 1.║ 打电话║ ║ 4.║ 2.║ 等待║ ║ 4.║ 2.║ 等待║ ║ 5.║ 3.║ 等待║ ║ 5.║ 3.║ 等待║ ╚═════════╩════════╩══════════╝


因此,计数应该返回2。我不擅长查询,所以我需要一些帮助。我尝试使用distinct进行计数,但它仍然不适用于我。

您可以使用窗口分析函数row\u number进行计数,您可以根据q\u log\u id进行排序,并对q\u id列上的行进行分区 获取最后一行并检查是否调用了status


您可以使用窗口分析函数row_number来完成此操作,您可以根据q_log_id进行排序,并对q_id列上的行进行分区 获取最后一行并检查是否调用了status


如果你不在乎“Called”是最后一个条目,你可以在“Called”从未出现的地方计算q_id值

SELECT COUNT(1)
FROM
(SELECT q_id
   FROM table1
  GROUP BY q_id
  HAVING MAX(CASE WHEN q_status ='Called' THEN 1 END) IS NULL
) AS v
这是因为查询

SELECT q_id,MAX(CASE WHEN q_status='Called' THEN 1 END)
  FROM table1
 GROUP BY q_id
如果“Called”从未与q_id关联,则给出NULL

Q_ID    MAX(CASE WHEN Q_STATUS='CALLED' THEN 1 END)
1       1
2       (null)
3       (null)

如果你不在乎“Called”是最后一个条目,你可以在“Called”从未出现的地方计算q_id值

SELECT COUNT(1)
FROM
(SELECT q_id
   FROM table1
  GROUP BY q_id
  HAVING MAX(CASE WHEN q_status ='Called' THEN 1 END) IS NULL
) AS v
这是因为查询

SELECT q_id,MAX(CASE WHEN q_status='Called' THEN 1 END)
  FROM table1
 GROUP BY q_id
如果“Called”从未与q_id关联,则给出NULL

Q_ID    MAX(CASE WHEN Q_STATUS='CALLED' THEN 1 END)
1       1
2       (null)
3       (null)

你所说的最后状态是什么意思?请解释为什么计数应该返回2。我不确定你想做什么?2和3似乎都没有被调用的最后状态,假设你想报告q_id,按q_log_id排序。你需要澄清一下。你所说的最后状态是什么意思?请解释为什么计数应该返回2。我不知道你想做什么?2和3似乎都没有被调用的最后状态,假设你想报告q_id,按q_log_id排序。你需要澄清一下。