MYSQL SUM语法

时间:2016-06-03 21:31:47

标签: mysql database syntax phpmyadmin sum

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

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;

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

2 个答案:

答案 0 :(得分:0)

您必须记住,按顺序始终适用于可见列 在你的情况下第一个选择

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

包含两个错误...... FROM子句之前的错误,和未显示的列的顺序

第二个是正确的

答案 1 :(得分:0)

不,第一个查询不起作用,因为它有错误。您正在GROUP BY字段上执行Movie.Name,但尝试在查询中包含未分组的字段而不使用聚合函数。在您想要使用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

以上是您的第一个查询的更正版本,但您的第二个查询肯定是正确的,可能是最佳做法,因为该表已经汇总。