当前位置: 首页 > 面试题库 >

在单个查询中计算加权平均值

公冶阳德
2023-03-14
问题内容

示例数据:

table A
part    rating   numReviews
A308    100      7
A308    98       89

我正在尝试获得上述数据的平均评分。

它需要的是每行rating*的总和numReviews除以总数numReviews

这是我正在尝试的操作,但给出的结果不正确(49.07,应为98.15):

select part, 
cast((AVG(rating*numReviews)/sum(numReviews)) as decimal(8,2)) as rating_average
from A group by part order by part

可以在单个查询中完成吗?我正在使用SQL Server


问题答案:

只需回到加权平均的定义即可,因此使用sum()s和除法:

select part, sum(rating * numreviews) / sum(numreviews) as rating_average
from a
group by part
order by part;

如果愿意,可以将其转换为小数:

select part,
       cast(sum(rating * numreviews) / sum(numreviews) as decimal(8, 2)) as rating_average
from a
group by part
order by part;


 类似资料:
  • 本文向大家介绍PHP计算加权平均数的方法,包括了PHP计算加权平均数的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP计算加权平均数的方法。分享给大家供大家参考。具体如下: 希望本文所述对大家的php程序设计有所帮助。

  • 问题内容: 我在Oracle中有一个表,每个给定部分有多行。每行都有一个与之关联的数量和价格。给定零件的行集合总计的总数量也是如此。以下是数据示例。我需要得到零件的平均加权价格。例如,如果数量为100的零件的价格为1,数量为50的零件的价格为2,则加权平均价格为1.33333333 有想法吗? 问题答案: 试试这个:

  • 问题内容: 我有下表。我想根据以下公式计算按每个日期分组的加权平均值。我可以使用一些标准的常规代码来执行此操作,但是假设此数据在pandas数据框中,是否有比通过迭代更简单的方法来实现此目的? 2012年1月1日w_avg = 0.5 (60 / sum(60,80,100))+ .75 (80 / sum(60,80,100))+ 1.0 *(100 / sum(60,80,100)) 2012

  • 我需要更改我的架构吗,还是可以使用当前的设置来更改?

  • 我试图做以下java分配和每件事似乎工作正常,除了当我把一个数字 谢谢 赋值:创建一个询问考试结果并计算成绩平均值的程序。成绩是4到10之间的浮点数。程序要求成绩,直到键入负数。如果用户给出的分数不是4到10之间的数字,则文本“无效成绩!”将在屏幕上打印,程序要求另一个分数。最后,程序在屏幕上打印输入的成绩数及其平均值,如示例打印所示。如果没有输入成绩,通知“您没有输入任何成绩。”是屏幕上唯一打印

  • 问题内容: 我想知道是否可以在一个SQL SERVER请求中获得总和的平均值, 尝试使用以下请求来执行此操作,但是它不起作用: 问题答案: 我认为您的问题需要一些解释。如果要取分组的总和,可以使用: 然后,如果要取该总和的平均值,则只需进行以下操作: 但是,您无法对外部查询进行分组,因为这将为您提供类似于第一个查询的结果。内部查询的结果已按分组。