Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较MYSQL中的平均值_Mysql - Fatal编程技术网

比较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
这是我的建议

更新


使用相同的表名。

您不能用我对您上一个问题的回答中的相同想法来解决这个问题吗?因此,这不是一个让人们为你编写代码的地方,你应该先尝试自己解决这个问题。你不能用我对你上一个问题的回答中的相同想法来解决这个问题吗?因此,这不是一个让人们为你编写代码的地方,你应该先尝试自己解决问题。你的小提琴很酷。喜欢它。非常感谢你。非常好的先生。你想从下层选民那里发表评论吗?你的小提琴很酷。喜欢它。非常好的先生。想从下层选民那里发表评论吗?