为什么MAX显示与SUM不同?
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 :(得分:2)
您正在使用MySQL的(错误)功能,不应该允许这样简单。实际上,系统参数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)
上的查询。
答案 1 :(得分:0)
答案 2 :(得分:0)
我认为您希望通过名称
制作GROUP BY