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 已经聚合。
如果我想知道电影名称及其销售总额,我可以使用下面的查询吗?
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 已经聚合。