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

问题描述

我是 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(电影 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
 

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...