【问题标题】:How to Select Max Value From a View PosgreSQL如何从视图中选择最大值 PostgreSQL
【发布时间】:2021-03-10 03:29:48
【问题描述】:

我是 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 的演员都与该演员在电影中。该视图用于查找每个演员拥有的合作演员的数量,现在我只需要从该列表中选择拥有最多合作演员的演员。

【问题讨论】:

  • 您能否提供示例输入和输出数据?
  • 绝对,np!
  • 好人已经发布了答案。如果您觉得可以,请查看答案。如果没有,那么您应该提供更多输入数据。因为没有迹象表明您是如何使用示例数据找到示例输出的。
  • 如果您的问题还没有解决,请分享Actors的表结构。
  • Postgres 还是 MySQL?这是两种截然不同的数据库产品

标签: sql view


【解决方案1】:

你可以使用解析函数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
 

【讨论】:

    猜你喜欢
    • 2013-05-31
    • 2021-11-24
    • 2021-12-07
    • 1970-01-01
    • 2015-08-30
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    • 2013-04-03
    相关资源
    最近更新 更多