簡體   English   中英

MySQL非空列的平均值

[英]MySQL average of non-null columns

我已經為此煩惱了,但是我覺得可能有一個更清潔/更快/更好的解決方案,並且總是熱衷於學習:

UPDATE myTable SET fAvg =

(COALESCE(f1,0) + COALESCE(f2,0) + COALESCE(f3,0) + COALESCE(f4,0))

/

(
CASE WHEN f1 IS NOT NULL THEN 1 ELSE 0 END + 
CASE WHEN f2 IS NOT NULL THEN 1 ELSE 0 END + 
CASE WHEN f3 IS NOT NULL THEN 1 ELSE 0 END +
CASE WHEN f4 IS NOT NULL THEN 1 ELSE 0 END 
)

那么,如何改善呢?

您可以利用MySQL在數字上下文中將布爾值視為整數的事實來簡化計數:

UPDATE myTable
    SET fAvg = (COALESCE(f1,0) + COALESCE(f2,0) + COALESCE(f3,0) + COALESCE(f4,0)) /
               ((f1 IS NOT NULL) + (f2 IS NOT NULL) + (f3 IS NOT NULL) + (F4 IS NOT NULL));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM