Câu trả lời:
Nếu các cột không thể rỗng thì chỉ cần sử dụng
(col1 + col2 + col3)/3
sẽ hoạt động tốt (mặc dù trên một số RDBMS, bạn có thể cần phải có tử số hoặc số chia không nguyên để tránh phân chia số nguyên).
Đối với các cột không thể, bạn có thể muốn sử dụng một cái gì đó như
SELECT CASE
WHEN COALESCE(col1, col2, col3) IS NOT NULL THEN
( COALESCE(col1, 0) + COALESCE(col2, 0) + COALESCE(col3, 0) ) /
(CASE WHEN col1 IS NULL THEN 0 ELSE 1 END +
CASE WHEN col2 IS NULL THEN 0 ELSE 1 END +
CASE WHEN col3 IS NULL THEN 0 ELSE 1 END)
END
Trên SQL Server, bạn cũng có thể sử dụng
SELECT *,
(SELECT AVG(Col)
FROM (VALUES(Col1),
(Col2),
(Col3)) V(Col)) AS col_average
FROM YourTable