Sql 条件平均

Sql 条件平均,sql,sql-server-2008,Sql,Sql Server 2008,我试图找出如何计算一个变量的精确平均值。 目前我有以下问题:(简化): 计算的平均值不是实际值。每个ID的Chargability是固定的,因此平均值不应考虑每个ID的行数,因为它只是值的替换,因为每个ID都有lotz的job_No 也就是说,我希望将(90*4)+(85.6*3)/7改为(90*4)+(85.6*3)/7,如目前所做的那样 查询由几个子查询组成,其中一些子查询还调用函数。这就是为什么我不能使用group by来尝试解决我遇到的问题。使用AVG函数和子查询 SELECT d.ID

我试图找出如何计算一个变量的精确平均值。 目前我有以下问题:(简化):

计算的平均值不是实际值。每个ID的Chargability是固定的,因此平均值不应考虑每个ID的行数,因为它只是值的替换,因为每个ID都有lotz的job_No

也就是说,我希望将(90*4)+(85.6*3)/7改为(90*4)+(85.6*3)/7,如目前所做的那样


查询由几个子查询组成,其中一些子查询还调用函数。这就是为什么我不能使用group by来尝试解决我遇到的问题。

使用
AVG
函数和
子查询

SELECT d.ID, d.Group_ID, d.Chargeability, d.Job_No_, 
AVG(SELECT MIN(sub.Chargeability) 
 FROM Data1 sub
 WHERE sub.id = d.id AND sub.Job_No_ = d.Job_No_
 GROUP BY sub.ID) AS GROUP_Chargeability
FROM Data1

您可以尝试使用这样的联接子查询:

SELECT d.ID, d.GROUP_ID, d.CHARGEABILITY, d.JOB_NO_, d2.charges 
FROM Data1 d LEFT JOIN 
(SELECT DISTINCT ID, GROUP_ID, AVG(CHARGEABILITY) AS CHARGES FROM Data1) d2 
    ON d2.ID = d.ID AND d2.GROUP_ID = d.GROUP_ID

要计算总体平均可计费性:

select avg(Chargeability) as avgChargeability
from (select id, avg(Chargeability) as Chargeability
      from t
      group by id
     ) id;
您可以使用
join
或子查询将此值带到每一行。

avg(不同收费)over(按组ID划分)
?假设您希望按组计算平均值。。。我想结果是87.8分。虽然如果ID 1和ID 3在同一组中具有相同的充电率,可能会错误地处理您希望如何平均。。。
select avg(Chargeability) as avgChargeability
from (select id, avg(Chargeability) as Chargeability
      from t
      group by id
     ) id;