我有两个表,我想执行两个表之间的连接,并按日期分组
表1为fbèU数据
id name created_at revenue
1 as 2020-05-29 19:30:54 5
2 as 2020-05-28 19:30:54 10
3 ad 2020-05-29 19:31:42 6
4 ad 2020-05-28 19:31:54 65
5 as 2020-05-29 19:32:10 7
6 ad 2020-05-28 19:31:54 5
表二是谷歌的数据
id name created_at sessions
1 as 2020-05-29 19:38:32 5
2 ad 2020-05-29 19:38:41 10
3 as 2020-05-29 19:38:49 7
4 as 2020-05-28 19:39:02 6
5 ad 2020-05-28 19:39:13 8
6 ad 2020-05-28 19:41:41 13
现在我想要的是按名称连接两列,然后按创建的\u at对它们进行分组。像这样的
Name , date(created_at) as date , sum(fb_data.revenue) , sum(google_data.revenue)
我有一个sql查询,但它并没有给出预期的结果
select gd.name,fb.total_revenue,fb.created_at,gd.total_sessions
from (select date(fb_data.created_at) as created_at, sum(fb_data.revenue) as total_revenue, name
from fb_data
group by date(fb_data.created_at), name) fb,
(select date(google_data.created_at) as created_at, sum(google_data.session) as total_sessions, name
from google_data
group by name, date(google_data.created_at)) as gd
where fb.name = gd.name
group by gd.name,fb.name,fb.created_at,gd.total_sessions
我得到的结果是
Name total_revenue created_at total_sessions
as 12 2020-05-29 12
as 12 2020-05-29 6
as 10 2020-05-28 12
as 10 2020-05-28 6
ad 6 2020-05-29 10
ad 6 2020-05-29 21
ad 70 2020-05-28 10
ad 70 2020-05-28 21
我期待的结果是
name total_revenue created_at total_sessions
as 12 2020-05-29 12
as 10 2020-05-28 6
ad 6 2020-05-29 10
ad 70 2020-05-28 21
4条答案
按热度按时间sqserrrh1#
这个问题比乍一看要难一点。
您需要连接三个子查询,每个子查询的名称和日期各一行。
第一个子查询提供所有可能的名称和日期。您需要这个,因为两个详细信息文件中的一个可能缺少另一个包含的某些名称/日期组合
第二个子查询获取每个名称/日期的会话计数。
第三个对收入也是如此。
然后将第二和第三个子查询左键联接到第一个子查询。
总而言之,你明白了。
https://www.db-fiddle.com/f/hiakasdwn1fuuuff3olbgz/0
sycxhyv72#
请使用下面的查询,
polkgigr3#
尝试以下查询:
kuuvgm7e4#
您可以使用下面的简单查询。它给出了期望的结果:
检查结果:https://www.db-fiddle.com/f/7wpgkon7sh58hnf7q4sufh/1