在理解查询别名在 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
关于sql - 访问postgresql中的列别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12034849/