2013-07-31 6 views
0

Найти фильмы, где их поклонники меньше, чем среднее число поклонников для этого конкретного жанраSQL Query устанавливающего средние

fan (fID: integer, fName: string) 
movies(mID: integer, mName: string, mGenre: string, mYear: integer) 
like(fID: integer, mID: integer) 

Внешних ключей:

(like.fID -> fan.fID) 
(like.mID-.> movie.mID) 

Я попытался сделать это, чтобы получить среднее число фанатов для каждого фильма, и это не помогло:

SELECT mGenre, AVG(total) 
FROM findAverage, movies 
GROUP BY mGenre; 

CREATE VIEW findAverage AS 
SELECT m.mName, COUNT(DISTINCT L.fID) as total 
FROM like L, movies m 
WHERE L.mID = B.mID 
GROUP BY m.mName 

ответ

1

Вам необходимо изменить свое мнение, чтобы включить mId поле. Затем вы можете использовать это поле в JOIN свой вид назад к таблице movies.

CREATE VIEW findAverage AS 
SELECT L.mId, m.mName, COUNT(DISTINCT L.fID) as total 
FROM like L 
    INNER JOIN movies m ON L.mID = B.mID 
GROUP BY L.mId, m.mName 

А затем, чтобы получить средние значения за жанр:

SELECT m.mGenre, AVG(f.total) 
FROM findAverage f 
    INNER JOIN movies m ON f.mId = m.mId 
GROUP BY m.mGenre 
+0

, как я могу получить выход как movieID и MovieName для фильмов, которые имеют меньше поклонников, чем в среднем любителей фильмов этого соответствующего жанра. Например, если в жанре action есть 100 поклонников в среднем за фильм, а у Rambo есть 89 фанатов, а у Rocky есть 105 фанатов, я просто хочу выпустить фильм Rambo и Rambo в iD. В очередной раз благодарим за помощь – user2636289

Смежные вопросы