Oracle为已租借电影的人提供信息

时间:2014-09-09 04:50:16

标签: sql oracle

使用mm_member和mm_rental表,编写一个查询,列出所有已租借至少一部电影的成员的所有成员(成员ID,名字和姓氏)以及他们租用的电影数量。对结果集进行排序,使其显示作为第一行租借的最多电影数。

我几个小时以来一直在努力解决这个问题,所以我正在寻求帮助。

这就是我所拥有的:

    SELECT mm_member.member_id, mm_member.last, mm_member.first, count(mm_rental.member_id)
    FROM mm_member, mm_rental
    WHERE mm_member.member_id = mm_rental.member_id
    AND count(mm_rental.member_id) > 0
    ORDER BY count(mm_rental.member_id);

我收到错误:ORA-00934:此处不允许使用群组功能。

如果需要,我很乐意提供整个数据库文件,只是让我知道!

1 个答案:

答案 0 :(得分:1)

您不能使用不带COUNT子句的聚合函数GROUP BY。这是您的查询与缺少的条款:

SELECT M.member_id
    ,M.last
    ,M.first
    ,COUNT(R.member_id) AS "nb_movies"
FROM mm_member M
INNER JOIN mm_rental R ON R.member_id = M.member_id
GROUP BY M.member_id, M.last, M.first
ORDER BY COUNT(R.member_id) DESC

我还更改了您的查询,以便使用INNER JOIN子句而不是旧学校的联合语法(我建议您避免使用此语法)。

希望这会有所帮助。