使用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:此处不允许使用群组功能。
如果需要,我很乐意提供整个数据库文件,只是让我知道!
答案 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
子句而不是旧学校的联合语法(我建议您避免使用此语法)。
希望这会有所帮助。