Tenho uma tabela no SQL Server chamada MyTable
.
Quero calcular a média por linha de duas colunas (digamos val1
e val2
). Até onde sei, sei que isso pode ser feito conforme mostrado abaixo na minha abordagem. Mas há alguma outra maneira de fazer isso mais rápido e sem precisar especificar o denominador?
CREATE TABLE MyTable
(
var CHAR(1) CHECK (var IN ('A', 'B', 'C')),
var2 CHAR(2) CHECK (var2 IN ('AA', 'BB', 'CC')),
val1 INT CHECK (val1 IN (1, 2, 3, 4, 5)),
val2 INT CHECK (val2 IN (1, 2, 3, 4, 5))
);
INSERT INTO MyTable (var, var2, val1, val2)
VALUES ('A', 'AA', 1, 2),
('B', 'BB', 3, 4),
('A', 'BB', 1, 2),
('B', 'BB', 3, 4),
('A', 'BB', 1, 2),
('B', 'CC', 3, 4),
('A', 'CC', 1, 2),
('B', 'BB', 3, 4),
('C', 'CC', 5, 1);
SELECT
var,
var2,
val1,
val2,
(val1 + val2) / 2 AS var3
FROM
Mytable
Para usar a função de agregação linha a linha, você pode "despivotar" a tabela
CROSS APPLY
e então calcular a agregação:db<>demonstração de violino
Nota lateral: O tipo de argumento determina o tipo de resultado.