3

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列を別の句に含める方法へのポインタだけを答えを求めているわけではありません。

誰か助けてもらえますか?

4

1 に答える 1

6

一般に、クエリの後半で集計列のエイリアスを参照することはできず、集計を繰り返す必要があります

その名前を本当に使用したい場合は、クエリをサブクエリとしてラップできます

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
于 2012-08-20T09:05:06.230 に答える