Mysql 如何使用另一列作为乘数而不是行计数从表中获取最高发生值

Mysql 如何使用另一列作为乘数而不是行计数从表中获取最高发生值,mysql,sql,average,Mysql,Sql,Average,假设有一个 dataset(col1,col2) with values (1000,1),(1,2),(1,2),(1,2),(1,2),(1,2),(1,2),(999999,3) 。 以下是您可以复制粘贴的查询: create temporary table tb4 (a INT,b INT); INSERT INTO tb4(a,b)values(1000,1),(1,2),(1,2),(1,2),(1,2),(1,2),(1,2),(199999,3); Select avg(

假设有一个

 dataset(col1,col2) 

with values (1000,1),(1,2),(1,2),(1,2),(1,2),(1,2),(1,2),(999999,3)
。 以下是您可以复制粘贴的查询:

create temporary table tb4 (a INT,b INT);
INSERT INTO tb4(a,b)values(1000,1),(1,2),(1,2),(1,2),(1,2),(1,2),(1,2),(199999,3);
Select avg(tb4.b) from tb4;
在这里,我想得到3。怎么做?如您所见,此设置中的平均值返回2,因为它确实是最常见的值。。就行了。但我希望它将'a'视为“行计数”,并返回3,就好像表中有相当数量的'a'列行(可以这么说),基本上使用名为'a'的列作为“公共”增量。但我不知道如何在查询中做到这一点。谢谢

我想你要的是加权平均数。你可以做:

select sum(x * y * 1.0) / sum(x)

b
列的平均值不是3,而是2。你为什么期望平均值为3?平均值。。是2。。。。为什么你想要3个??请清楚地解释你的问题编辑了问题我重新措辞了问题,以便更好地符合我的设想。。。对不起,如果之前不清楚,快到了!如果数据集(x,y)是(1,2),(1,2),(1,2),(1,2),(1,2),(1,2),(1,2),(20,3),(20,5),(20,5)?@MoeEpo。我想这只是一个向上取整或向下取整的问题。你能回顾一下我的问题吗?我想现在更清楚了