AVG()SQL 中的函数适用于特定的列数据。但在这里,我们要计算每行三个这样的列的平均值。在数学中,我们会做
AVG=(col1 + col2 + col3)/3
Run Code Online (Sandbox Code Playgroud)
同样:是否有任何查询要计算AVG(col1, col2, col3...)?
如果列不可为空,则只需使用
(col1 + col2 + col3)/3
Run Code Online (Sandbox Code Playgroud)
会正常工作(尽管在某些 RDBMS 上,您可能需要使用非整数分子或除数来避免整数除法)。
对于可为空的列,您可能想要使用类似
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
Run Code Online (Sandbox Code Playgroud)
在 SQL Server 上,您还可以使用
SELECT *,
(SELECT AVG(Col)
FROM (VALUES(Col1),
(Col2),
(Col3)) V(Col)) AS col_average
FROM YourTable
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34994 次 |
| 最近记录: |