将COUNT与条件

时间:2016-08-10 20:24:53

标签: sql count null

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

我想要的是在每个调查事件中通过一系列日期检索给定物种的数量。我能够在看到该物种的日子里完成此任务,但我也希望在没有观察到该物种的情况下包含0个事件的条目。

1 个答案:

答案 0 :(得分: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,您的表格和列名称,您的数据(例如,每只动物是一个观察记录还是观察记录包含所看到的动物数量?)等而有所不同。您可能会有如果您提供了更多信息,我会得到更好的答案: - )