我想知道我们如何在SQL上实现这个公式

Name    Category    Value
A   1   3
A   2   4
A   1   5
A   2   2
A   1   3
A   2   1
B   1   2
B   2   3
B   1   4
B   2   5
B   1   6
B   2   7
B   1   5

平均

A   3
B   4.625

例如,有2个名称A B,每个组有1、2、3、.部门,每个部门都有价值

  • First step: 平均 Value by Division (it might be have more than 1 value)
  • Second step: 平均 Value by Group (Division1,Division2,......)
  • Third step: 平均 Value by Name (Group1,Group2,....)

Excel公式:

AVERAGE((SUMIFS(D:D,C:C,1,B:B,"A")/COUNTIFS(B:B,"A",C:C,1)),(SUMIFS(D:D,C:C,2,B:B,"A")/COUNTIFS(B:B,"A",C:C,2)))

如有任何帮助,我们将不胜感激.

推荐答案

根据详细信息,try 执行以下步骤.

  1. 按部门划分的平均值:
SELECT Name, Division, AVG(Value) AS AverageValueByDivision
FROM YourTable
GROUP BY Name, Division;
  1. 各组平均值:
SELECT Name, AVG(AverageValueByDivision) AS AverageValueByGroup
FROM (
    SELECT Name, Division, AVG(Value) AS AverageValueByDivision
    FROM YourTable
    GROUP BY Name, Division
) AS DivisionAverages
GROUP BY Name;
  1. 名称平均值:
SELECT AVG(AverageValueByGroup) AS AverageValueByName
FROM (
    SELECT Name, AVG(AverageValueByDivision) AS AverageValueByGroup
    FROM (
        SELECT Name, Division, AVG(Value) AS AverageValueByDivision
        FROM YourTable
        GROUP BY Name, Division
    ) AS DivisionAverages
    GROUP BY Name
) AS GroupAverages;

Sql相关问答推荐

SQL组通过聚合到单独的列中

如何连接第二个表并将其内容输入到第一个表的单个字段中?

出现5次后,将所有正斜杠替换为连字符

retrofit AWS Athena中的JSON

SQL Oracle条件分组依据

如何在不更改S代码的情况下,判断存储过程调用了多少次clr函数?

如何从查询中的三个或更多个表中添加另一个相同的列?

如何使用SQL Server中的Nodes()方法执行与OPENXML相同的操作

ColdFusion+Docker:未安装SQLSERVER包

需要从键-值对数据中提取值

无法访问级联删除导致的触发器中已删除的外键记录

为什么SQL in中的空子查询有时被视为null

在同一列上迭代时计算持续时间

如何判断小数点后千位是否不为0

替换SQL Server XML中多处出现的 node 值

在 SQL Server 中合并两个 XML 列

AdventureWorks 查询

如何使用最后一个非 NULL 值在 PostgreSQL 列中填充 NULL 值

BigQuery Pivot 遗漏行

在 Athena / Presto 中提取 JSON 对象以获取动态密钥