所以我整晚都这样做 - 对我的作业不太了解,遗憾的是我的教授在周末没有。我发布了一些这样的问题,这是最后一个问题。我有一些事情需要继续,但它需要工作(而且我想要完全理解答案,所以我不再需要类似的帮助)。在这里:找到显示最大电影数量的影院的名称和电话号码。当多个影院之间存在平局时,请确保您的查询有效。
以下是我的表格声明(感谢今晚所有人帮助我,我欠你很多时间)。
CREATE TABLE Theatres (
Name varchar2(50) not null,
City varchar2(50) not null,
State varchar2(50) not null,
Zip number not null,
Phone varchar2(50) not null,
PRIMARY KEY (Name)
);
CREATE TABLE Movies (
Title varchar2(100) not null,
Rating NUMBER not null,
Length NUMBER not null,
ReleaseDate date not null,
PRIMARY KEY (Title),
CHECK (Rating BETWEEN 0 AND 10),
CHECK (Length > 0),
CHECK (ReleaseDate > to_date('1/January/1900', 'DD/MONTH/YYYY'))
);
CREATE TABLE ShownAt (
TheatreName varchar2(50) not null,
MovieTitle varchar2(100) not null,
PRIMARY KEY (TheatreName, MovieTitle),
FOREIGN KEY (TheatreName) REFERENCES Theatres(Name),
FOREIGN KEY (MovieTitle) REFERENCES Movies(Title)
);
我正在尝试将我从StackOverflow成员帮助中学到的一些东西应用到其他问题中,但我不确定如何根据列的最大结果返回一些内容。任何帮助将不胜感激。
答案 0 :(得分:1)
这是一种方式。
With T As
(
SELECT T.Name, T.Phone,
RANK() OVER (ORDER BY COUNT(S.MovieTitle ) DESC) AS Rnk
FROM Theatres T
JOIN ShownAt S ON S.TheatreName= T.Name
GROUP BY T.Name, T.Phone
)
SELECT Name, Phone
FROM T
WHERE Rnk=1;