Weighted Average formula - beast mode

Hi all-

I am using a beast mode to calculate the weighted average of days between two dates (payment due date and invoice date). Formula here: SUM((`PAYMNT_DUE_DT`-`INVOICE_DT`)*`RECPT_AMT_USD`)/ SUM(`RECPT_AMT_USD`)

However, I realized there may be some zeros in the output that are possibly causing the weighted average to be skewed lower. Can someone let me know if there is something I should add to exclude zeros maybe?


  • Sum(Case when (your function) = 0 then 0 else (your function) end)

  • GrantSmith
    GrantSmith Indiana 🔴

    Hi @stephgalfano

    You can use a CASE statement to filter some values in your calculation. See

    CASE WHEN `value_or_expression` <> 0 THEN `value` END

    Alternatively you could use the filter on your card to filter out other values.

  • jaeW_at_Onyx
    jaeW_at_Onyx Budapest / Portland, OR 🟤


    I don't believe your problem is the existence of zeros. Or att least, perhaps not the way you're explainig it anyway.

    1) i assume payment_due_dt is a dateTime column. If so, you shouldn't do dt-dt, I'm not sure it's reasonable to assume that Domo will calculate the difference between two dates. Instead, use the DateDiff function. Be clear if it's dateTime or just date, b/c you might get a decimal result if it's less than a complete date.

    Lastly, what happens if payment came in on the same day as the invoice? then, yes the datediff is zero, so i assume that's where you want your CASE statement, if datediff = 0 then 1 else datediff end.