SELECT TOP(100) M.title, count(WH.movie_id)
FROM Movie AS M
inner join WatchHistory AS WH ON M.movie_id = WH.movie_id
GROUP BY WH.movie_id, M.title, count(WH.movie_id)
ORDER BY count(WH.movie_id) ASC;
BlockquoteColumn'Movie.title'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。
我的任务是执行以下查询:
放映100部到目前为止的影片 被看着。这也意味着0次[电影标题,观看次数]。 查看此信息要求。
出现上面的错误
答案 0 :(得分:1)
您应仅按M.title分组。如果打算对行进行分组,请决定将哪些列进行分组。请记住,除了聚合函数(例如COUNT)之外,GROUP BY子句中的所有列最终都只能包含在SELECT子句中。分组聚合函数对GROUP BY子句中定义的行集进行操作,并返回汇总结果。示例包括SUM,MIN,MAX COUNT和AVG。在没有GROUP BY子句的情况下,所有行都被视为一组;对它们全部进行聚合。
答案 1 :(得分:1)
有很多问题:
count(WH.movie_id)
中删除了GROUP BY
[CountViews]
ORDER BY
中使用的别名而不是聚合固定的SQL:
SELECT TOP(100) M.title, count(WH.movie_id) as [CountViews]
FROM Movie AS M
inner join WatchHistory AS WH ON M.movie_id = WH.movie_id
GROUP BY M.title
ORDER BY [CountViews] ASC;