如何从PosgreSQL视图中选择最大值

如何从PosgreSQL视图中选择最大值,sql,view,Sql,View,我是SQL新手,我正在尝试从视图中选择一个最大值。数据库由电影和演员组成,嵌套查询部分工作。我正试图找到合作演员最多的演员,所以我做的第一件事就是计算每个演员的合作演员数量。现在,我想选择具有最高共同参与者的值,并返回参与者的编号和名称。请在下面查找尝试的代码: CREATE VIEW actorview AS SELECT COUNT(DISTINCT A2.name) AS Count, A.name AS Name FROM actors A, actors A2

我是SQL新手,我正在尝试从视图中选择一个最大值。数据库由电影和演员组成,嵌套查询部分工作。我正试图找到合作演员最多的演员,所以我做的第一件事就是计算每个演员的合作演员数量。现在,我想选择具有最高共同参与者的值,并返回参与者的编号和名称。请在下面查找尝试的代码:

CREATE VIEW actorview AS 
    SELECT COUNT(DISTINCT A2.name) AS Count, A.name AS Name
        FROM actors A, actors A2 
        WHERE A2.mid =A.mid
        GROUP BY A.name;
    
SELECT Name, MAX(Count) FROM actorview;
演员表

CREATE TABLE actors (mid integer NOT NULL, name varchar, cast_position integer, PRIMARY KEY (mid, name), 
                     FOREIGN KEY (mid) REFERENCES movies(mid) ON DELETE CASCADE ON UPDATE CASCADE);
编辑:
在上表中,mid-movie ID表示一个演员曾经演过的电影,任何与另一个演员共享同一mid的演员都与该演员在一部电影中。该视图用于查找每个参与者拥有的合作参与者的数量,现在我只需要从该列表中选择拥有最多合作参与者的参与者。

您可以使用分析函数rank,如下所示:

Select * from
(Select a.name, count(distinct a2.name) as co_actors,
       Rank() over (order by count(distinct a2.name) desc ) as rn
  From actors a join actors c
    On a.mid = a2.mid and a.name <> a2.name
 Group by a.name) t
 Where rn = 1
 

你能提供输入和输出数据的样本吗?绝对可以!一个好的人已经发布了答案。如果你同意的话,请调查一下答案。如果没有,那么您应该提供更多的输入数据。因为没有迹象表明您是如何使用示例数据找到示例输出的。如果您的问题尚未解决,请共享Actors.Postgres或MySQL的表结构?这是两种截然不同的数据库产品