我正在处理简单的查询以学习 MySQL,在我的示例数据库中,我跟踪销售电子设备的商店,我有一个表 Sells(Store, Item, Price)。
示例数据是,
'Best Buy', 'Galaxy S', 1000
'Buy More', 'Macbook Air', 2000
'Best Buy', 'Microsoft Mouse', 20
'Best Buy', 'Macbook Pro Cover', 40
'Buy More', 'Asus Zenbook', 2000
等等..
我尝试了下面的 sql 语句,但它说:
Error Code: 1111. Invalid use of group function 0.000 sec
SELECT store
FROM sells
WHERE SUM(price) <
(SELECT SUM(price) AS total
FROM sells
GROUP BY store
ORDER BY total DESC
LIMIT 1)
GROUP BY store
ORDER BY SUM(price) DESC
如果你能帮助我,我将不胜感激
谢谢
最佳答案
这将直接显示第二贵的商店;
SELECT STORE
FROM TABLE_A
GROUP BY STORE
ORDER BY SUM(PRICE) DESC
LIMIT 1,1
演示 here .
如果你也想显示价格,你也可以选择它;
SELECT STORE, SUM(PRICE) TOTAL_PRICE
FROM TABLE_A
GROUP BY STORE
ORDER BY TOTAL_PRICE DESC
LIMIT 1,1
演示 here .
编辑:如果您有几家最贵的商店和几家第二贵的商店,那么获取所有第二贵的商店的查询就会变得相当复杂;我敢肯定有人可以击败这个效率;
SELECT STORE, SUM(PRICE) TOTAL_PRICE
FROM TABLE_A
GROUP BY STORE
HAVING TOTAL_PRICE =
(SELECT SUM(PRICE) TMP
FROM TABLE_A
GROUP BY STORE
HAVING TMP <
(SELECT SUM(PRICE) TMP2
FROM TABLE_A
GROUP BY STORE
ORDER BY TMP2 DESC
LIMIT 1)
ORDER BY TMP DESC LIMIT 1)
演示 here .
关于mysql - 在 MySQL 中查找第二个最昂贵的总产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9470792/