如何 Select 视图 PostgreSQL 中的最大值
How to Select Max Value From a View PosgreSQL
我是 SQL 的新手,我正在尝试 select 视图中的最大值。数据库是电影和演员,嵌套查询部分有效。我试图找到拥有最多合作演员的演员,所以我做的第一件事就是计算每个演员的合作演员数量。现在我想 select 具有最高合作演员的值和 return 演员的编号和姓名。请在下面找到尝试的代码:
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;
演员table
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);
编辑:
在上面的 table mid (movie ID) 中代表了一个演员曾经出演过的电影,任何与另一个演员共享相同 mid 的演员都与该演员一起出演过电影。该视图用于查找每个演员拥有的共同演员的数量,现在我只需要 select 从该列表中拥有最多共同演员的演员。
您可以使用解析函数排名如下:
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
我是 SQL 的新手,我正在尝试 select 视图中的最大值。数据库是电影和演员,嵌套查询部分有效。我试图找到拥有最多合作演员的演员,所以我做的第一件事就是计算每个演员的合作演员数量。现在我想 select 具有最高合作演员的值和 return 演员的编号和姓名。请在下面找到尝试的代码:
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;
演员table
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);
编辑: 在上面的 table mid (movie ID) 中代表了一个演员曾经出演过的电影,任何与另一个演员共享相同 mid 的演员都与该演员一起出演过电影。该视图用于查找每个演员拥有的共同演员的数量,现在我只需要 select 从该列表中拥有最多共同演员的演员。
您可以使用解析函数排名如下:
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