【发布时间】:2020-05-21 13:40:30
【问题描述】:
我在 sql 中有两个表,我需要创建另一个表来执行基于另外两个表的计算。
第一个是每个广告单元的收入总和,表名是 ad_unit_table
SELECT
d.`Date`,
'App' as `Partner`,
d.`Ad Unit`,
sum(d.`Revenue`) as `Revenue`
from
`d_master` as d
group by
`Ad Unit`, `Date`
另一个表包含所有广告单元的收入总和,表名为 sum_revenue
SELECT
`Date`,
`Partner`
`Ad Unit`,
sum(`Revenue`) as `Sum Revenue`
from
`ad_unit_table`
group by
`Date`
现在我必须找出每个广告单元的收入百分比。所以公式是 (Ad Unit Rev / Sum Rev) * 100。我的代码目前如下所示:
SELECT
ad.`Date`,
ad.`Partner`,
ad.`Ad Unit`,
(ad.`Revenue` / s.`Sum Revenue`) * 100 as `Percentage`
FROM
`ad_unit_table` as ad
LEFT JOIN `sum_revenue` as s ON ad.`Partner`
GROUP BY
`Date`,
`Ad Unit`
它给了我所有的 NULLS。我将不胜感激任何帮助。谢谢!
【问题讨论】:
-
您的第二个查询没有意义。
select中有未聚合的列。 -
不幸的是(SQL 初学者不知道)如果在
ONLY_FULL_GROUP_BY模式关闭的情况下运行(其他 RDBMS 会正确出错),MySQL 允许这样无效的第二个查询。 -
@GordonLinoff 是否有意义 - 在总收入中,我有我正在寻找的收入。我还在 DOMO 平台上运行查询,它有自己的特点。
-
@Strawberry 您的评论无关紧要。我很乐意提供数据样本。
标签: mysql sql datatables domo