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?

Answers

  • 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 🟤


    SUM((`PAYMNT_DUE_DT`-`INVOICE_DT`)*`RECPT_AMT_USD`)/ SUM(`RECPT_AMT_USD`)
    

    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.