我正在尝试查询以下信息。没有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;
谢谢!
答案 0 :(得分:1)
在构造结果集之前无法访问列别名(此处为error_percentage
)。 ORDER BY
不会受到影响,因为(必须进行)排序_after_已检索到结果集。
使用
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
;
如果先修剪结果集,它会更高效,甚至更干净:
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
;
答案 1 :(得分:0)
我只用一个表达式替换strippedLib: $(SHLIB)
if test -e "/usr/bin/strip" & test -e "/bin/uname" & [[ `uname` == "Linux" ]] ; then /usr/bin/strip --strip-debug $(SHLIB); fi
.phony: strippedLib
:
where