MySQL中的AVG查询

MySQL中的AVG查询,mysql,Mysql,我需要mysql avg查询的帮助 表f ticker | avgvol | mc 表l ticker | vo2 下面的select查询提供了一个包含20个值的列表 SELECT f.avgvol / l.vo2 ds from f join l on f.ticker = l.ticker order by mc desc LIMIT 20 现在我想得到limt 20以上的平均值,并尝试以下查询。。但我犯了个错误 SELECT avg(f.av

我需要mysql avg查询的帮助

表f

ticker | avgvol | mc
表l

ticker | vo2 
下面的select查询提供了一个包含20个值的列表

SELECT f.avgvol / l.vo2 ds 
  from f
  join l
    on f.ticker = l.ticker 
   order 
    by mc desc 
 LIMIT 20
现在我想得到limt 20以上的平均值,并尝试以下查询。。但我犯了个错误

SELECT avg(f.avgvol / l.vo2) 
FROM f 
JOIN l on f.ticker = l.ticker 
WHERE (
    SELECT COUNT(*) FROM f ORDER BY f.mc DESC 
) <=20

非常感谢

为什么使用嵌套查询在单个查询中使用avg函数,如下所示:

SELECT avg(tb_finvizall.avgvol / tb_live.vo2) as ds
 from tb_finvizall join tb_live
 on tb_finvizall.ticker = tb_live.ticker
 order by mc desc LIMIT 20

您可以使用下一种方法:

select AVG(ds) from
(select (f.avgvol / l.vo2) ds 
  from f
  join l
    on f.ticker = l.ticker 
  where l.vol2 <> 0
  order by mc desc 
LIMIT 20) data;

后错误也;谢谢但是你的问题没有考虑20的限制。。因为它可以从完整的表格中计算平均值,非常感谢!它正在工作!我得到了正确的平均值!只有一个问题:因为我也得到了警告,警告除以0,并且我在限制20中没有任何零。。它正在对数据库中的所有记录执行f.avgvol/l.vo2,因为我有一些超出限制的零,还有一个问题。。当我想使用计算的AVGds并选择f.name where f.avgvol/l.vo2>AVGds/100 x120 20%biggerI只需添加防止零除法警告的where条件时,完整查询将如何进行。关于你的第二个问题,你应该问另外一个问题