2013-07-31 162 views
0

查找电影,他们的球迷都小于该特定类型SQL查询发现平均

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具有比各自流派的电影的平均球迷少的球迷电影。例如,如果动作类型每部电影平均有100名粉丝,兰博有89名粉丝,而洛基有105名粉丝,我只想让兰博和兰博的电影iD输出。再次感谢你的帮助 – user2636289