Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.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 将COUNT与条件语句一起使用时包含空值_Sql_Count_Null - Fatal编程技术网

Sql 将COUNT与条件语句一起使用时包含空值

Sql 将COUNT与条件语句一起使用时包含空值,sql,count,null,Sql,Count,Null,我试图从一系列野生动物调查中检索数据。为了回答这个问题,我使用了两个主要的表。其中一个描述“事件”,包括调查事件发生的日期和时间。另一个描述了“观察”,显示了所看到的每个物种以及观察发生的调查事件 我想要的是通过一系列日期在每个调查事件期间检索给定物种的计数。我可以在看到该物种的日子里完成这项工作,但我还希望在未观察到该物种的情况下,包含事件计数为0的条目。您可以选择与日期范围匹配的事件,并使用相关子查询来计算观察数: select event_id, ( select cou

我试图从一系列野生动物调查中检索数据。为了回答这个问题,我使用了两个主要的表。其中一个描述“事件”,包括调查事件发生的日期和时间。另一个描述了“观察”,显示了所看到的每个物种以及观察发生的调查事件


我想要的是通过一系列日期在每个调查事件期间检索给定物种的计数。我可以在看到该物种的日子里完成这项工作,但我还希望在未观察到该物种的情况下,包含事件计数为0的条目。

您可以选择与日期范围匹配的事件,并使用相关子查询来计算观察数:

select 
  event_id,
  (
    select count(*)
    from observation o
    where o.event_id = e.event_id
    and o.species_id = :species_id
  ) as observation_count
from event e
where event_date between :start_date and :end_date;

实际查询将根据您的DBMS、表名和列名、数据(例如,是每只动物有一个观察记录,还是观察记录包含看到的动物数量?)等而有所不同。如果您提供更多信息,您可能会得到更好的答案:-)

您能发布您的数据结构吗?你试过什么?结果如何?哪些关系数据库?oracle、sql server、mysql?包括一些表结构和示例数据以及期望的结果。例如@Nikki9696说使用left join,这很好,但是对于未观察到的物种,要达到0,您可能需要在日期和要在连接中使用的物种之间生成某种交叉