我正在尝试创建一个SELECT
查询,该查询在两个表中的一个表上执行多个计算字段。我是SQL的新手(我看过几个免费的在线教程,所以我有一个大致的想法),但我认为我的目标有点超出我的技能范围。
我有两张桌子:
TreeRecord
列ID
(序列),Site
(chr)
每个ID代表一棵树。
{li> TreeHistory
列ID
(序列),TreeID
(int),DBH
(int)
DBH是树木直径。
目前我可以创建:
| Site | Total tree count of site | Avg DBH of site |
我希望有另一个列可以为每个站点提供特定大小的树的总数。我可以在一个简单的查询中重新创建这个,我对堆栈(SQL Select - Calculated Column if Value Exists in another Table)的研究让我觉得嵌套的SELECT是我所追求的,但我无法让它工作。我目前的代码是:
SELECT
"TreeRecord"."Site",
count("TreeRecord".*) AS Total_Count,
round(avg("TreeHistory"."DBH"), 0) AS Average_DBH
FROM
"TreeRecord"
LEFT OUTER JOIN
"TreeHistory" ON "TreeRecord"."ID" = "TreeHistory"."TreeID"
GROUP BY
"Site"
ORDER BY
"Site" ASC;
对此的任何帮助都将非常感激。
谢谢
答案 0 :(得分:1)
使用具有特定尺寸条件的count
。
SELECT "TreeRecord"."Site",
count("TreeRecord".*) AS Total_Count,
round(avg("TreeHistory"."DBH"),0) AS Average_DBH,
count(case when "TreeHistory"."DBH" > 10 then 1 end) as count_over_specific_size
^^--change this size accordingly
FROM "TreeRecord"
LEFT OUTER JOIN "TreeHistory"
ON "TreeRecord"."ID" = "TreeHistory"."TreeID"
GROUP BY "Site"
ORDER BY "Site" ASC;