2017-06-17 175 views
-1

为什么MAX显示不同于SUM?SQL:为什么这些查询返回不同的结果?

SELECT name, price, MAX(downloads) FROM app_list GROUP BY price; 
SELECT name, price, SUM (downloads) FROM app_list GROUP BY price; 

    name price MAX(downloads) 
    ABC  0.0  30000 

    name price SUM(downloads) 
    XYZ  0.0  1000500 

在第二查询中,XYZ应用程序,它是自由具有总最多下载。那么如何来应用ABC也是免费是下载量最大的应用程序?

+0

使GROUP BY我想'集团by'的问题是扣除了价格,并添加名字。只有Mysql允许运行此查询。如果可能的话,为所有行添加样本数据 –

+0

下注价格将为0? – SMA

+2

我想我们应该从下面开始:你明白'MAX()'和'SUM()'各自做了什么,它们之间有什么不同? –

回答

2

你正在使用MySQL的(MIS)的功能,简单不应该允许。实际上,系统参数ONLY_FULL_GROUP_BY是最新版本中的默认值。

问题是什么?这是第一个查询:

SELECT name, price, MAX(downloads) 
FROM app_list 
GROUP BY price; 

无论你可能会认为或希望它是干什么的,但事实是,它返回一个不确定name每个price。该名称与最大值无关。

如果你想要的最大值,然后使用子查询。这里有一种方法:

SELECT a.* 
FROM app_list a 
WHERE a.downloads = (SELECT MAX(a2.downloads) FROM app_list a2 WHERE a2.price = a.price); 

此查询还具有的优点是它可以很容易地在app_list(price, downloads, name)需要查询的优势。

+0

哇!非常感谢你! – SMalakar

0

我想你想的名字

相关问题