如何从PosgreSQL视图中选择最大值
我是SQL新手,我正在尝试从视图中选择一个最大值。数据库由电影和演员组成,嵌套查询部分工作。我正试图找到合作演员最多的演员,所以我做的第一件事就是计算每个演员的合作演员数量。现在,我想选择具有最高共同参与者的值,并返回参与者的编号和名称。请在下面查找尝试的代码:如何从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
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的表结构?这是两种截然不同的数据库产品