理解postgresql中查询别名的工作方式有点困难。
我有以下资料:

SELECT DISTINCT robber.robberid,
                nickname,
                Count(accomplices.robberid) AS count1
FROM   robber
       INNER JOIN accomplices
               ON accomplices.robberid = robber.robberid
GROUP  BY robber.robberid,
          robber.nickname
ORDER  BY Count(accomplices.robberid) DESC;


 robberid |            nickname            | count1
----------+--------------------------------+--------
       14 | Boo Boo Hoff                   |      7
       15 | King Solomon                   |      7
       16 | Bugsy Siegel                   |      7
       23 | Sonny Genovese                 |      6
        1 | Al Capone                      |      5
 ...

我可以使用as命令重命名“count1”列,但似乎无法在查询中再次引用它?我试图在这个查询的末尾包含HAVING命令,以便只查询计数小于最大值一半的对象。
这是家庭作业,但我不要求答案,只是一个指针,告诉我如何在另一个子句中包含count1列。
有人能帮忙吗?

最佳答案

通常,在查询的后面不能引用聚合列的别名,必须重复聚合
如果您真的想使用它的名称,可以将查询包装为子查询

SELECT *
FROM
(
    SELECT DISTINCT robber.robberid, nickname, count(accomplices.robberid)
    AS count1 FROM robber
    INNER JOIN accomplices
    ON accomplices.robberid = robber.robberid
    GROUP BY robber.robberid, robber.nickname
) v
ORDER BY count1 desc

09-30 17:07