[英]Divide one table by another table created in the same query
我有以下 SQL 查詢:
SELECT `NeighbourhoodName`,
count(NAME) as `Number of Parks`,
sum(CASE
WHEN `parks`.`Advisories` = 'Y' THEN 1
ELSE 0
END) as Advisories,
FROM parks
GROUP BY `NeighbourhoodName`;
在代碼的第二行,我創建了一個名為“Number of Parks”的列。 我希望下一列(建議)中的所有值除以“公園數量”中的值。 但是,當我嘗試像這樣在列之后插入除法語句時:
SELECT `NeighbourhoodName`,
count(NAME) as `Number of Parks`,
sum(CASE
WHEN `parks`.`Advisories` = 'Y' THEN 1
ELSE 0
END)/`Number of Parks` as Advisories
FROM parks
GROUP BY `NeighbourhoodName`;
我收到以下錯誤:
Unknown column, `Number of Parks` in field list.
如何在執行此除法的同時仍將其保留在一個查詢中?
您需要使用外部查詢來進行除法。
SELECT `NeighbourhoodName`,
`Number of Parks`,
Advisories/`Number of Parks` as Advisories
FROM ( SELECT `NeighbourhoodName`,
count(NAME) as `Number of Parks`,
sum( CASE WHEN `parks`.`Advisories` = 'Y' THEN 1 ELSE 0 END ) as Advisories
FROM parks
GROUP BY `NeighbourhoodName`
) as tbl;
可以在查詢 select 列表中使用別名來為列賦予不同的名稱。 您可以在 GROUP BY、ORDER BY 或 HAVING 子句中使用別名來引用該列。
或者使用count(Name)
的表達式代替Number of Parks
:
select NeighbourhoodName,
count(Name) as `Number of Parks`,
sum(case when Advisories='Y' then 1 else 0 end)
/count(Name) as Advisories
from parks
group by NeighbourhoodName;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.