无法识别WHERE子句中的别名

时间:2018-07-19 17:40:30

标签: sql postgresql alias

我正在尝试查询以下信息。没有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;

谢谢!

2 个答案:

答案 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
相关问题