如何按需求关联3张表?SQL聚合查询GROUP BY报错求助
嘿,这个报错我太熟啦!问题出在你用了聚合函数,但没把Movies.Title放到GROUP BY子句里~
为什么会报错?
当你使用SUM()、COUNT()这类聚合函数时,数据库需要明确知道按照哪个字段分组来计算总和或数量。你在SELECT里选了Movies.Title这个非聚合字段,但没告诉数据库要按这个标题分组,它就不知道该把哪些行的价格加总、哪些预订数统计在一起,所以就抛出了这个错误。
修正后的代码
首先补全你没写完的Movies关联条件(假设是通过MovieId关联,你可以换成实际的关联字段),然后把Movies.Title加到GROUP BY里:
SELECT Movies.Title, SUM(Bookings.Price) AS newPrice, COUNT(Bookings.BookingId) AS Quantity FROM Orders INNER JOIN Bookings ON Orders.BookingId = Bookings.BookingId INNER JOIN Movies ON Movies.MovieId = Orders.MovieId -- 替换成你的实际关联字段 GROUP BY Movies.Title
更严谨的写法(推荐)
如果存在同名电影(不同MovieId但标题相同),上面的写法会把它们的统计结果合并到一起。这种情况下,最好用唯一的MovieId来分组,同时保留标题在结果里:
SELECT Movies.MovieId, Movies.Title, SUM(Bookings.Price) AS newPrice, COUNT(Bookings.BookingId) AS Quantity FROM Orders INNER JOIN Bookings ON Orders.BookingId = Bookings.BookingId INNER JOIN Movies ON Movies.MovieId = Orders.MovieId GROUP BY Movies.MovieId, Movies.Title
这样就能准确按每一部电影来统计总销售额和预订数量啦~
内容的提问来源于stack exchange,提问作者MammaDiGrenie'
相关产品推荐
相关产品推荐

