我正在选择一些数据;
select c.*,
coalesce(s.column1, ...),
coalesce(s.column2, ...),
FROM
(SELECT ...)
基本上,如果s.column1
或s.column2
为null
,那么我会采用一些逻辑来取该列的平均值并改为使用它。
我想拥有另一个领域,所以我可以知道天气与否,该值是使用平均值计算还是不计算 - 也许是布尔值?让我们说第1列的平均值是120,表格看起来像;
column1 column2 avg
54 10 0
200 40 0
120 180 1
499 160 0
这样我就可以看到第三行是使用所有行的avg
生成的,因为它最初是null
。
avg
列的逻辑如何运作?
答案 0 :(得分:2)
你的问题对我来说似乎没有意义,因为:
AVG
函数默认忽略NULL
个值,因此使用NULL
个广告位的整体平均值的平均值与完全省略这些广告位相同,NULL
值的行,可以使用CASE
表达式所以,为了得到你想要的东西,只需使用它:
SELECT
column1,
column2,
CASE WHEN column1 IS NULL THEN 1 ELSE 0 END AS avg
FROM yourTable;
并且知道SELECT AVG(column1) FROM yourTable
将返回相同的值,无论省略NULL
行,还是使用整体平均值。