比较MYSQL中的平均值
如果我有桌子比较MYSQL中的平均值,mysql,Mysql,如果我有桌子 shirt +--------+------+ | color | size | +--------+------+ | red | 2 | | red | 4 | | red | 2 | | blue | 3 | | blue | 5 | | yellow | 2 | | yellow | 7 | +--------+------+ 我只想展示那些高于平均水平的 所以 在MYSQL中实现这一点的最佳方法是什
shirt
+--------+------+
| color | size |
+--------+------+
| red | 2 |
| red | 4 |
| red | 2 |
| blue | 3 |
| blue | 5 |
| yellow | 2 |
| yellow | 7 |
+--------+------+
我只想展示那些高于平均水平的
所以
在MYSQL中实现这一点的最佳方法是什么
编辑:我有一个不同集合的代码,我刚刚编了一个简单的例子,这样我可以看到它是如何完成的,然后自己试试。你需要单独计算平均值。您可以使用内部查询执行此操作:
select * from shirts where size > (select avg(size) / 2 from shirts);
select color, size
from shirts
where size > (select avg(size) from shirts)
在Oracle中,可以使用“with”子句,也称为“commontableexpression”,以提高效率。在MySQL中,如果优化器对每一行进行内部查询,您可能需要使用两个单独的语句——一个用于获取平均值,另一个用于执行选择。您需要分别计算平均值。您可以使用内部查询执行此操作:
select color, size
from shirts
where size > (select avg(size) from shirts)
在Oracle中,可以使用“with”子句,也称为“commontableexpression”,以提高效率。在MySQL中,如果优化器对每一行执行内部查询,您可能必须使用两个单独的语句——一个用于获取平均值,另一个用于执行选择操作。尝试:
SELECT shirt.color, shirt.size
FROM shirt INNER JOIN (SELECT color, AVG(size) size FROM shirt GROUP BY color) AS table2
ON shirt.color = table2.color
WHERE shirt.size >= table2.size
这是我的建议
更新
使用相同的表名。尝试:
SELECT shirt.color, shirt.size
FROM shirt INNER JOIN (SELECT color, AVG(size) size FROM shirt GROUP BY color) AS table2
ON shirt.color = table2.color
WHERE shirt.size >= table2.size
这是我的建议
更新
使用相同的表名。您不能用我对您上一个问题的回答中的相同想法来解决这个问题吗?因此,这不是一个让人们为你编写代码的地方,你应该先尝试自己解决这个问题。你不能用我对你上一个问题的回答中的相同想法来解决这个问题吗?因此,这不是一个让人们为你编写代码的地方,你应该先尝试自己解决问题。你的小提琴很酷。喜欢它。非常感谢你。非常好的先生。你想从下层选民那里发表评论吗?你的小提琴很酷。喜欢它。非常好的先生。想从下层选民那里发表评论吗?