簡體   English   中英

將一個表除以在同一查詢中創建的另一個表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM