根据生成其他字段的方式选择值

时间:2018-05-16 10:46:45

标签: mysql

我正在选择一些数据;

select c.*,
coalesce(s.column1, ...),
coalesce(s.column2, ...),
FROM
    (SELECT ...)

基本上,如果s.column1s.column2null,那么我会采用一些逻辑来取该列的平均值并改为使用它。

我想拥有另一个领域,所以我可以知道天气与否,该值是使用平均值计算还是不计算 - 也许是布尔值?让我们说第1列的平均值是120,表格看起来像;

column1    column2    avg
54         10         0
200        40         0
120        180        1
499        160        0

这样我就可以看到第三行是使用所有行的avg生成的,因为它最初是null

avg列的逻辑如何运作?

1 个答案:

答案 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行,还是使用整体平均值。