【问题标题】:SQL multiply by AVGSQL 乘以 AVG
【发布时间】:2019-03-13 07:35:31
【问题描述】:

我有一列 ([A]) 有一些数字 - 比如说 A1、A2、A3.... 而且我需要第二个 ([B]) 这是第一个乘以平均值的结果那里的所有数字 - 例如

B1=A1*(A1+A2+.....+An)/n
B2=A2*(A1+A2+.....+An)/n

等等。微软 SQL Server 2016

【问题讨论】:

  • 向我们展示一些示例表数据和预期结果 - 都是格式化文本,而不是图像。

标签: sql sql-server group-by aggregate-functions


【解决方案1】:

应该这样做:

SELECT a * AVG(a) OVER () AS b
FROM t
  • AVG(a) 等同于 SUM(a) / COUNT(a)
  • AVG(a) OVER ()SELECT AVG(a) FROM t 相同。

【讨论】:

    【解决方案2】:

    试试这个:

    select A as A, A * (select sum(A) from tbl) / (select count(A) from tbl) as B
    from tbl
    

    【讨论】:

      【解决方案3】:

      你可以使用窗口功能

      select A ,A*( sum(A) over()/count(A)over()) as B
      from table
      

      【讨论】:

        【解决方案4】:

        有一个派生表(子查询),您可以在其中计算 sum(A)nCROSS JOIN.

        select t1.A * t2.sumA / t2.n
        from tablename t1
        cross join (select sum(A) as sumA, count(*) as n from tablename) t2
        

        【讨论】:

          猜你喜欢
          • 2010-10-30
          • 2010-10-22
          • 1970-01-01
          • 2021-03-19
          • 2013-01-18
          • 2012-09-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多