Sql avg使用查询

时间:2017-12-07 11:53:43

标签: sql average

我今天的问题是这样的:

有多少客户高于平均水平? 我这样回答但是错了

select avg(height), count(*) as numofppl
from client
group by height
having height > avg(height)

有人可以提供不同的解决方案(谁工作:))

3 个答案:

答案 0 :(得分:2)

select count(*) as numofppl
from client
where height > ( select avg(height) from client )

答案 1 :(得分:0)

尝试此查询

count(*)统计height > avg height

的所有客户
select count(*) as numofppl from client where height > ( select avg(height) from client )

答案 2 :(得分:0)

按高度分组。所以你得到一行高度100,一个高度200,等等。现在你问每组的平均值是多少,但是组高100的所有记录都有高度= 100,所以平均值是100。由于having height > avg(height)having height > height在查询中只是group by height

然而,你想要比较的不是每个身高的平均值,而是总的平均值:没有GROUP BY因此:

select count(*) 
from client
where height > (select avg(height) from client);

如果要显示平均高度,请加入:

select x.avg_height, count(*)
from client c
cross join (select avg(height) as avg_height from client) x
where c.height > x.avg_height;

(根据DBMS,您可能必须使用x.avg_height上的汇总功能,例如select max(x.avg_height)。)