我目前是一名学生,在做 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
我不明白为什么,我必须使用子查询吗?我怎样才能做到这一点?
不能在 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