Вопрос Oracle SQL - нужна помощь - PullRequest
0 голосов
/ 12 сентября 2010

Так что я занимаюсь этим всю ночь - не могу понять мою домашнюю работу, и, к сожалению, мой профессор недоступен в выходные дни. Я опубликовал несколько таких вопросов, последний из них. У меня есть кое-что для продолжения, но это требует работы (и, исходя из этого, я бы хотел полностью понять ответ, чтобы мне больше не понадобилась помощь в чем-то подобном). Вот и все: найдите название и номер телефона кинотеатров, которые показывают максимальное количество фильмов. Убедитесь, что ваш запрос работает, когда есть связь между несколькими театрами.

Вот мой стол, заявляет (и спасибо всем, кто выручил меня сегодня вечером, я в долгу перед тобой).

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, в других вопросах, но я не уверен, как вернуть что-то, основываясь на максимальных результатах столбца. Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 12 сентября 2010

Вот один из способов.

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...