gpt4 book ai didi

mysql - 如何mysql按日期分组多个左连接

转载 作者:行者123 更新时间:2023-11-29 11:27:40 26 4
gpt4 key购买 nike

我有以下架构: http://sqlfiddle.com/#!9/bd3a4/1我想 按 date() 分组并添加 user_id = ?..每天并计算每天的结果。所需结果 Day|TotalRequests|TotalOrders

最佳答案

由于您可能在第 1 天收到订单,并在第 8 天收到请求,因此您可能在一侧有条目,但在另一侧没有条目。为了满足您的需求,我将按日期单独对所有订单和请求进行联合。然后将这些值累加起来。内部预聚合结果查询是应用每个用户的 WHERE 子句的位置。预聚合查询还有一个 recSource 列,用于指示记录的来源,“O”来自订单,“R”来自请求,因此汇总知道分别存储总计数的列。

select
preAgg.recDate,
SUM( case when preAgg.recSource = 'O' then preAgg.recCount else 0 end ) as OrderCount,
SUM( case when preAgg.recSource = 'R' then preAgg.recCount else 0 end ) as RequestCount
from
( select
date(o.created_at) recDate,
'O' as recSource,
count(*) as recCount
from
orders o
where
o.user_id = 3
group by
date(o.created_at)
UNION ALL
select
date(r.created_at) recDate,
'R' as recSource,
count(*) as recCount
from
requests r
where
r.user_id = 3
group by
date(r.created_at) ) preAgg
group by
preAgg.recDate
order by
preAgg.recDate

为了查询优化,我会确保您的订单和请求表都有一个索引(user_id,created_at)。

SQL Fiddle result

关于mysql - 如何mysql按日期分组多个左连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37920577/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com