2017-06-17 196 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

我想你想的名字

相關問題