use fields from different tables group by date to calculate percentage

Hi, I am trying to calculate a percentage using two fields from two different tables in SQL Magic Transformation.
Table a
looks like this:
Date All Revenue 09/01/21 100 09/02/21 200
Table b
looks like this:
Date HDM Revenue 09/01/21 90 09/02/21 170
I need to build a table that would calculate the percentage of HDM Revenue, with the following formula: (`Sum HDM Revenue` * 100) / `Sum All Revenue`
The desired output is:
Date HDM Percentage 09/01/21 90 09/02/21 85
When I run the following query I have an error: `Subquery returns more than 1 row.`
SELECT `Date`, ((select `HDM Revenue` from `b`) * 100) / `All Revenue` as `dfp HDM Percentage` from `a` group by `Date`
I also tried to group the subquery by Date
. How would I indicate the corresponding rows?
Thank you! :)
Best Answers
-
Hi @user095063
You need to join your two tables together since you have one table for all your revenue and another for your HDM revenue. Try something like this:
select `a`.`Date`, SUM(`b`.`HDM Revenue`) / SUM(`a`.`All Revenue`) FROM `a` LEFT JOIN `b` ON `a`.`Date` = `b`.`Date` GROUP BY `a`.`Date`
**Was this post helpful? Click Agree or Like below**
**Did this solve your problem? Accept it as a solution!**1 -
I would not get into the habit of JOINING fact tables this will lead to heartache and row growth. if you continue down this path you tend to end up with a ton of single use datasets that only work for the card they power.
instead UNION the two tables together (usually I like to differentiate with an Activity Type column.
then you can take a nice clean sum(colA)/ sum(colB) in Analyzer.
even though it seems simple, @GrantSmith 's GROUP BY clause means that you no longer have any drill down capability. That's super limiting for your business users...
Jae Wilson
Check out my 🎥 Domo Training YouTube Channel 👨💻
**Say "Thanks" by clicking the ❤️ in the post that helped you.
**Please mark the post that solves your problem by clicking on "Accept as Solution"1
Answers
-
Hi @user095063, have you tried adding MAX before 'HDM Revenue'?
9 -
Hi @user095063
You need to join your two tables together since you have one table for all your revenue and another for your HDM revenue. Try something like this:
select `a`.`Date`, SUM(`b`.`HDM Revenue`) / SUM(`a`.`All Revenue`) FROM `a` LEFT JOIN `b` ON `a`.`Date` = `b`.`Date` GROUP BY `a`.`Date`
**Was this post helpful? Click Agree or Like below**
**Did this solve your problem? Accept it as a solution!**1 -
I would not get into the habit of JOINING fact tables this will lead to heartache and row growth. if you continue down this path you tend to end up with a ton of single use datasets that only work for the card they power.
instead UNION the two tables together (usually I like to differentiate with an Activity Type column.
then you can take a nice clean sum(colA)/ sum(colB) in Analyzer.
even though it seems simple, @GrantSmith 's GROUP BY clause means that you no longer have any drill down capability. That's super limiting for your business users...
Jae Wilson
Check out my 🎥 Domo Training YouTube Channel 👨💻
**Say "Thanks" by clicking the ❤️ in the post that helped you.
**Please mark the post that solves your problem by clicking on "Accept as Solution"1
Categories
- All Categories
- 2K Product Ideas
- 2K Ideas Exchange
- 1.6K Connect
- 1.3K Connectors
- 311 Workbench
- 6 Cloud Amplifier
- 9 Federated
- 3.8K Transform
- 657 Datasets
- 115 SQL DataFlows
- 2.2K Magic ETL
- 814 Beast Mode
- 3.3K Visualize
- 2.5K Charting
- 81 App Studio
- 45 Variables
- 775 Automate
- 190 Apps
- 481 APIs & Domo Developer
- 81 Workflows
- 23 Code Engine
- 40 AI and Machine Learning
- 20 AI Chat
- 1 AI Playground
- 1 AI Projects and Models
- 18 Jupyter Workspaces
- 410 Distribute
- 120 Domo Everywhere
- 280 Scheduled Reports
- 10 Software Integrations
- 144 Manage
- 140 Governance & Security
- 8 Domo Community Gallery
- 48 Product Releases
- 12 Domo University
- 5.4K Community Forums
- 41 Getting Started
- 31 Community Member Introductions
- 114 Community Announcements
- 4.8K Archive