不识别 WHERE 子句中的别名
not recognizing alias in WHERE clause
我正在尝试查询以下信息。没有 WHERE 子句,查询执行完美;但是,当我在 WHERE 子句中添加时,我收到别名 "error_percentage" 未被识别的错误。我还尝试使用 HAVING 而不是 WHERE,以及 LIMIT。
我应该如何使用我在 SELECT 子句中创建的别名来缩小查询范围?
SELECT date, ((CAST(error AS float) / CAST(success AS float)) *100) AS error_percentage
FROM daily_report
WHERE error_percentage > 1
ORDER BY error_percentage DESC;
谢谢!
列别名(此处:error_percentage
)在构建结果集之前不可访问。 ORDER BY
不受影响,因为排序发生(必然)_after_the 结果集已检索。
使用
SELECT agg.*
FROM (
SELECT date, ((CAST(error AS float) / CAST(success AS float)) *100) AS error_percentage
FROM daily_report
ORDER BY error_percentage DESC
) agg
WHERE error_percentage > 1
;
如果您先 trim 结果集,效率会更高,而且可能会更干净:
SELECT agg.*
FROM (
SELECT date, ((CAST(error AS float) / CAST(success AS float)) *100) AS error_percentage
FROM daily_report
) agg
WHERE error_percentage > 1
ORDER BY error_percentage DESC
;
我只想用表达式替换 where
:
SELECT date,
((CAST(error AS float) / CAST(success AS float)) *100) AS error_percentage
FROM daily_report
WHERE error > 0.01 * success
ORDER BY error_percentage DESC;
我正在尝试查询以下信息。没有 WHERE 子句,查询执行完美;但是,当我在 WHERE 子句中添加时,我收到别名 "error_percentage" 未被识别的错误。我还尝试使用 HAVING 而不是 WHERE,以及 LIMIT。
我应该如何使用我在 SELECT 子句中创建的别名来缩小查询范围?
SELECT date, ((CAST(error AS float) / CAST(success AS float)) *100) AS error_percentage
FROM daily_report
WHERE error_percentage > 1
ORDER BY error_percentage DESC;
谢谢!
列别名(此处:error_percentage
)在构建结果集之前不可访问。 ORDER BY
不受影响,因为排序发生(必然)_after_the 结果集已检索。
使用
SELECT agg.*
FROM (
SELECT date, ((CAST(error AS float) / CAST(success AS float)) *100) AS error_percentage
FROM daily_report
ORDER BY error_percentage DESC
) agg
WHERE error_percentage > 1
;
如果您先 trim 结果集,效率会更高,而且可能会更干净:
SELECT agg.*
FROM (
SELECT date, ((CAST(error AS float) / CAST(success AS float)) *100) AS error_percentage
FROM daily_report
) agg
WHERE error_percentage > 1
ORDER BY error_percentage DESC
;
我只想用表达式替换 where
:
SELECT date,
((CAST(error AS float) / CAST(success AS float)) *100) AS error_percentage
FROM daily_report
WHERE error > 0.01 * success
ORDER BY error_percentage DESC;