如何为以下内容编写查询:对于在1/1/2007和1/1/2008期间至少有2个样本的每个珊瑚,列出珊瑚名称和样本数量。
我认为它需要一个子查询,但我尝试过其他方式,但它对我没用。是否有些人能够将其拼写出来'对我而言,我可以理解实际发生的事情并尝试对此进行类似的查询。
TABLES
REEF [reefname,纬度,经度,2006_bleachedarea,summer_maximum_monthly_mean_temperature] 关键词:reefname
REEFTEMP [reefname,dateofreading,temperaturereading] 关键词:reefname,dateofreading
珊瑚[珊瑚码,珊瑚名,热门限] 关键:珊瑚码
CORALSAMPLING [sampleno,coralcode,reefname,dateofsampling,bleachpercent] 密钥:sampleno
这是我到目前为止所拥有的。我怀疑它是否正确。
SELECT coralcode, sampleno
FROM coralbleach__coralsampling
WHERE
dateofsampling BETWEEN '2007/1/1' AND '2008/1/1'
GROUP BY sampleno
答案 0 :(得分:0)
您应该可以进行简单的连接,例如;
SELECT coral.name, COUNT(coralsampling.sampleno) number_of_samples
FROM coral
JOIN coralsampling
ON coral.coralcode = coralsampling.coralcode
AND coralsampling.dateofsampling BETWEEN '2007/1/1' AND '2008/1/1'
GROUP BY coral.name
HAVING COUNT(coralsampling.sampleno) > 1
此查询将获取所有珊瑚,将它们与各自的样本和珊瑚名称分组(这意味着我们可以使用COUNT
来计算每个珊瑚名称的样本行数)
然后,我们使用HAVING
过滤掉所有不含2个或更多样本的珊瑚。
联接有点过于复杂,无法以简短的答案格式详细描述,但我强烈建议您阅读JOIN和GROUP BY,以便能够轻松地构建这样的查询。