在理解查询别名在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