MySQL在获取列的平均值方面的问题

dar*_*rsh 2 mysql database select average

我有一个MySQL表有三列id,名称和高度.

我想运行一个查询来返回所有条目的名称和高度,以及所有条目的平均高度.所有这些都必须在一个查询中完成.

这是我试过的.

SELECT name, height, avg(height) as average_height FROM mytable
Run Code Online (Sandbox Code Playgroud)

此查询仅返回单行,但平均高度正确.

name    height    average_height
--------------------------------
Harry   165       169.5
Run Code Online (Sandbox Code Playgroud)

然后我尝试了这个查询

SELECT name, height, avg(height) as average_height FROM mytable GROUP BY name
Run Code Online (Sandbox Code Playgroud)

然后它返回所有行,但平均值不正确

name    height    average_height
--------------------------------
Harry   165       165
Tom     170       170
George  180       180
Raj     163       163
Run Code Online (Sandbox Code Playgroud)

如何在单个查询中获取平均值和所有行.

小智 5

这是一种方式:

SELECT name, height, average_height FROM mytable CROSS JOIN (
   select avg(height) as average_height FROM mytable
) as avg;
Run Code Online (Sandbox Code Playgroud)

SQLFiddle示例(更新示例以反映要使用的建议CROSS JOIN).