有关movie.title的SQL查询错误无效

时间:2019-03-14 20:08:02

标签: sql sql-server

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次[电影标题,观看次数]。 查看此信息要求。

出现上面的错误

2 个答案:

答案 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;