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倍的电影标题,观看次数。为此信息需求创建一个视图。
它给出了上面的错误
发布于 2019-03-15 04:22:09
有很多问题:
从GROUP BY
[CountViews]
count(WH.movie_id)
在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;
发布于 2019-03-15 04:12:32
您应该只按M.title分组。如果要对行进行分组,请确定要对哪些列进行分组。请记住,除了聚合函数(如COUNT )之外,SELECT子句最终只能包含GROUP BY子句中的列。分组聚合函数对GROUP BY子句中定义的行集进行操作,并返回汇总结果。示例包括SUM、MIN、MAX COUNT和AVG。如果没有GROUP BY子句,则将所有行视为一个集合;对所有行执行聚合。
https://stackoverflow.com/questions/55171172
复制相似问题