nested case for arithmetic operators
Hi,
I've been having troubles with MySQL dataflow trying to write a code basically doing something like this:
(CASE WHEN week = 1 THEN (a/b) END)  (c/d) * e
i tried writing it down like this:
(CASE WHEN `Week` = "1" THEN SUM((CASE WHEN `8Q` = "POR" AND `Fiscal_Year` = "FY19" THEN(`8Q_Price`*`Tons`) END))
/ SUM((CASE WHEN `8Q` = "POR" AND `Fiscal_Year` = "FY19" THEN `Tons` END)) END)  (CASE when week = 1 THEN (a/b) END) 

(SUM((CASE WHEN `8Q` = "POR" AND `Fiscal_Year` = "FY19" THEN(`8Q_Price`*`Tons`) END))
/ SUM((CASE WHEN `8Q` = "POR" AND `Fiscal_Year` = "FY19" THEN `Tons` END))) (c/d)
*
SUM((CASE WHEN `8Q` = "POR" AND `Fiscal_Year` = "FY19" THEN `Tons` END)) e
I am not having syntax errors with this code but I keep on getting wrong answers even if I change the groupings. Can you guys recommend something?
Thanks!
p.s. a colleague of mine recommended to use a CREATE FUNCTION statement, will it work in our MySQL Dataflow?
Best Answer

Hey drewfig,
No worries. I moved some of the parentheses around so this should work for what you described above.
((SUM(CASE WHEN `8Q` = "POR" AND `Fiscal_Year` = "FY19" and `Week` = "1" THEN `8Q_Price`*`Tons` END)
/
SUM(CASE WHEN `8Q` = "POR" AND `Fiscal_Year` = "FY19" and `Week` = "1" THEN `Tons` END))  (CASE when week = 1 THEN (a/b) END) 

(SUM(CASE WHEN `8Q` = "POR" AND `Fiscal_Year` = "FY19" THEN `8Q_Price`*`Tons` END)
/ SUM(CASE WHEN `8Q` = "POR" AND `Fiscal_Year` = "FY19" THEN `Tons` END))) (c/d)
*
SUM(CASE WHEN `8Q` = "POR" AND `Fiscal_Year` = "FY19" THEN `Tons` END) eHope this helps,
Brian
**Please mark "Accept as Solution" if this post solves your problem
**Say "Thanks" by clicking the "heart" in the post that helped you.
**Please mark "Accept as Solution" if this post solves your problem
**Say "Thanks" by clicking the "heart" in the post that helped you.0
Answers

Hello Drewfig,
Based on the order of operations, you want your algorithm to divide a and b then divide c and d then multiply the results of c/d by e and then subtract the results of (a/b) and (c/d*e).
(SUM(CASE WHEN `8Q` = "POR" AND `Fiscal_Year` = "FY19" and `Week` = "1" THEN `8Q_Price`*`Tons` END)
/
SUM(CASE WHEN `8Q` = "POR" AND `Fiscal_Year` = "FY19" and `Week` = "1" THEN `Tons` END))  (CASE when week = 1 THEN (a/b) END) 

((SUM(CASE WHEN `8Q` = "POR" AND `Fiscal_Year` = "FY19" THEN `8Q_Price`*`Tons` END)
/ SUM(CASE WHEN `8Q` = "POR" AND `Fiscal_Year` = "FY19" THEN `Tons` END)) (c/d)
*
SUM(CASE WHEN `8Q` = "POR" AND `Fiscal_Year` = "FY19" THEN `Tons` END)) eThe above will work for what you described in your post.
Hope this helps,
Brian
**Please mark "Accept as Solution" if this post solves your problem
**Say "Thanks" by clicking the "heart" in the post that helped you.
**Please mark "Accept as Solution" if this post solves your problem
**Say "Thanks" by clicking the "heart" in the post that helped you.1 
Hey Brian,
Thanks for taking time to check on my question. actually what we wanted to do is to subtract the results of (a/b) and (c/d) and then the result of the subtraction will be multiplied by e.
It will be like ((a/b)  (c/d)) * e.
I apologize for the confusion yesterday. can you help revising the code? thanks!
0 
Hey drewfig,
No worries. I moved some of the parentheses around so this should work for what you described above.
((SUM(CASE WHEN `8Q` = "POR" AND `Fiscal_Year` = "FY19" and `Week` = "1" THEN `8Q_Price`*`Tons` END)
/
SUM(CASE WHEN `8Q` = "POR" AND `Fiscal_Year` = "FY19" and `Week` = "1" THEN `Tons` END))  (CASE when week = 1 THEN (a/b) END) 

(SUM(CASE WHEN `8Q` = "POR" AND `Fiscal_Year` = "FY19" THEN `8Q_Price`*`Tons` END)
/ SUM(CASE WHEN `8Q` = "POR" AND `Fiscal_Year` = "FY19" THEN `Tons` END))) (c/d)
*
SUM(CASE WHEN `8Q` = "POR" AND `Fiscal_Year` = "FY19" THEN `Tons` END) eHope this helps,
Brian
**Please mark "Accept as Solution" if this post solves your problem
**Say "Thanks" by clicking the "heart" in the post that helped you.
**Please mark "Accept as Solution" if this post solves your problem
**Say "Thanks" by clicking the "heart" in the post that helped you.0
Categories
 10.5K All Categories
 3 Connect
 913 Connectors
 250 Workbench
 458 Transform
 1.7K Magic ETL
 69 SQL DataFlows
 476 Datasets
 183 Visualize
 249 Beast Mode
 2.1K Charting
 11 Variables
 16 Automate
 354 APIs & Domo Developer
 88 Apps
 3 Workflows
 20 Predict
 5 Jupyter Workspaces
 15 R & Python Tiles
 245 Distribute
 62 Domo Everywhere
 242 Scheduled Reports
 20 Manage
 41 Governance & Security
 168 Product Ideas
 1.2K Ideas Exchange
 9 Community Forums
 27 Getting Started
 14 Community Member Introductions
 55 Community News
 4.5K Archive