gpt4 book ai didi

mysql - 复杂的 MySQL SELECT 查询

转载 作者:行者123 更新时间:2023-11-29 07:06:51 24 4
gpt4 key购买 nike

嗨,我仍然在关注 MySQL,所以希望有人能够阐明这一点

我有一个名为customers 的表,其中包含以下列

msisdn BIGINT 20
join_date DATETIME

msisdn 是识别客户的唯一值。

还有一个名为 ws_billing_all 的表,其结构如下

id  INTEGER  11 (Primary Key)
msisdn BIGINT 20
event_time DATETIME
revenue INTEGER

因此,此表将每个客户的所有交易存储在由 msisdn 标识的客户表中。

我需要做的是确定 30 天后某一天加入的所有客户的金额。

例如,在 2010 年 12 月 2 日,获得了 1,100 个客户。根据 ws_billing_all 中的数据,在这一天加入的客户从该日期起的 30 天内产生了多少总收入。

为此,我可能需要另一个表,但不确定而且真的不确定如何提取这些数据。任何帮助将不胜感激。

最佳答案

@Cularis 非常接近...您只关心那些在一天加入的客户,并希望他们在接下来的 30 天内赚取所有收入...在这种情况下,客户永远不会在他们的加入日期,所以我没有在考虑的实际销售日期之间添加明确的日期。

SELECT 
date( c.Join_Date ) DateJoined,
count( distinct c.msisdn ) DistinctMembers,
count(*) NumberOfOrders,
SUM(w.revenue) AmountOfRevenue
FROM
customers c
JOIN ws_billing_all w
ON c.msisdn = w.msisdn
AND date( w.event_time ) <= date_add( c.Join_Date, INTERVAL 30 DAY )
WHERE
c.Join_Date >= SomeDateParameterValue
group by
date( c.Join_Date )
order by
date( C.Join_Date )

编辑——澄清...

如果您在 12 月 1 日有 150 人加入,12 月 2 日有 45 人加入,12 月 3 日有 83 人加入,您想要查看基于他们加入的那一天的每组人的总收入,以及 30 天的销售额。 .. 所以...

Joined on     Number of People     Total Revenue after 30 days
Dec 1 150 $21,394 (up to Dec 31)
Dec 2 45 $ 4,182 (up to Jan 1)
Dec 3 83 $ 6,829 (up to Jan 2)

这是否更好地阐明了您的需求?然后我们可以调整查询...

最终编辑 ...

我想我已经得到了您想要的东西(还有一些可能有用的订单)。将来,提供复杂性质的样本输出会很有帮助,即使它像我在这里所做的那样简单。

关于客户表中的 WHERE 子句....假设您只关心在给定时间范围内或仅在给定日期之后加入的客户...这是您要更新子句的地方.. .如果你想基于所有人,那就完全删除它。

关于mysql - 复杂的 MySQL SELECT 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6845268/

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