SQL умножить на AVG - PullRequest
       50

SQL умножить на AVG

0 голосов
/ 13 марта 2019

У меня есть столбец ([A]) с некоторыми числами - скажем, A1, A2, A3 .... И мне нужно иметь второй ([B]), который является результатом умножения первого на среднеевсех чисел там - например,

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

и так далее.MS SQL Server 2016

Ответы [ 4 ]

0 голосов
/ 13 марта 2019

Это должно сделать это:

SELECT a * AVG(a) OVER () AS b
FROM t
  • AVG(a) идентично SUM(a) / COUNT(a)
  • AVG(a) OVER () идентично SELECT AVG(a) FROM t.
0 голосов
/ 13 марта 2019

Вы можете использовать оконную функцию

select A ,A*( sum(A) over()/count(A)over()) as B
from table
0 голосов
/ 13 марта 2019

Иметь производную таблицу (подзапрос), где вы вычисляете sum(A) и n.CROSS JOIN.

select t1.A * t2.sumA / t2.n
from tablename t1
cross join (select sum(A) as sumA, count(*) as n from tablename) t2
0 голосов
/ 13 марта 2019

Попробуйте это:

select A as A, A * (select sum(A) from tbl) / (select count(A) from tbl) as B
from tbl
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...