MYSQL SUM 语法

MYSQL SUM Syntax

如果我想知道电影名称及其销售总额,我可以使用下面的查询吗?

Movie.Name, Movie.Sales, 
FROM Movie 
GROUP BY Movie.Name 
HAVING SUM (Movie.Sales)>120000 
ORDER BY SUM(Movie.Sales)DESC;

我知道最好写

Movie.Name, Movie.Sales, 
FROM Movie 
GROUP BY Movie.Name 
HAVING Movie.Sales>120000 
ORDER BY Movie.Sales DESC;

我只是想知道第一个是否仍然会被认为是测试中的好答案。顺便说一句,这两个查询都给出了相同的结果,但是不需要 SUM,因为 Movie.Sales 已经有了总数。你认为这是一个糟糕的答案吗?

您必须牢记,排序依据始终适用于可见列 在你的情况下,第一个 select

select  Movie.Name, Movie.Sales, 
FROM Movie
GROUP BY Movie.Name HAVING SUM (Movie.Sales)>12000 0 
ORDER BY SUM(Movie.Sales)DESC;

包含两个错误... FROM 子句之前的错误 , 以及未显示的列上的排序依据

第二个是正确的

不,第一个查询将不起作用,因为它有错误。您在 Movie.Name 字段上执行 GROUP BY,但试图在没有聚合函数的情况下在查询中包含非分组字段。任何您想使用 Movie.Sales 字段的地方,您都必须将它与 SUM() 函数结合使用。

SELECT Movie.Name, SUM(Movie.Sales) Sales
FROM Movie
GROUP BY Movie.Name
HAVING SUM(Movie.Sales)>120000
ORDER BY SUM(Movie.Sales) DESC

以上是您第一个查询的更正版本,但您的第二个查询绝对正确,并且可能是最佳实践,因为 table 已经聚合。