SQL找不到列,无法使用条件过滤数据

问题描述 投票:0回答:1

我目前是一名学生,在做 SQL 练习时,我遇到了一个问题,并尝试做一件事。 所以这是主要查询

SELECT
    Date,
    Region,
    Total_Bags,
    Small_Bags,
       (Small_Bags / Total_Bags) *100 AS Small_BagsPercent
FROM sql-data-analys-corso.avocado_dataset.avocado_prices
WHERE Total_Bags <>0
ORDER BY Small_BagsPercent

我希望 SQL 只显示 Small_BagsPercent > 10,但查询告诉我 Unrecognized name: Small_BagsPercent at [9:5] 如果我这样写查询

SELECT
    Date,
    Region,
    Total_Bags,
    Small_Bags,
   (Small_Bags / Total_Bags) *100 AS Small_BagsPercent
FROM sql-data-analys-corso.avocado_dataset.avocado_prices
WHERE Total_Bags <>0
AND Small_BagsPercent >10
ORDER BY Small_BagsPercent

我不明白为什么,我必须使用子查询吗?我怎样才能做到这一点?

sql sql-server filter compiler-errors
1个回答
0
投票

不能在 WHERE 子句中使用列别名,因为 WHERE 子句在 SELECT 子句之前处理。您可以将计算写在 WHERE 子句中

SELECT
    Date,
    Region,
    Total_Bags,
    Small_Bags,
   (Small_Bags / Total_Bags) *100 AS Small_BagsPercent
FROM sql-data-analys-corso.avocado_dataset.avocado_prices
WHERE Total_Bags <>0
AND (Small_Bags / Total_Bags) *100 > 10
ORDER BY Small_BagsPercent
© www.soinside.com 2019 - 2024. All rights reserved.