如何统计用户在某个日期多次下单的订单记录? [复制]
Posted
技术标签:
【中文标题】如何统计用户在某个日期多次下单的订单记录? [复制]【英文标题】:How to count order records which user made more than one order in certain date? [duplicate] 【发布时间】:2019-01-02 03:17:38 【问题描述】:您好,我正在尝试统计一个月内下单不止一个订单的用户的订单记录,例如 2018-01-01 到 2018-02-01。
Order table
id user_id date
1 12 2017-01-02
2 23 2018-01-03
3 12 2018-01-04
4 12 2018-01-08
....
User table
id
12
23
....
我需要的是某个月份的一些订单记录
输出
输出应该是 2,这意味着 user_id 12 已经在 2017 年 1 月 2 日下订单,所以订单表 3 和 4 中的 id 是我需要计算的记录。 然后总结总记录
我想我需要先获取订单记录,然后使用特定的 user_id 再次查找订单记录。但我被困住了 有没有办法完成这个任务? 谢谢
【问题讨论】:
“我需要的是某个月的订单记录数”...每个用户,还是总数?您在问题的其余部分中提到了用户,但随后在需求陈述中省略了他们?另外,到目前为止,您尝试过什么? COUNT()、GROUP BY 和 MONTH() 或 MONTHNAME() 都是你的朋友。 @ADyson 总计 那么“用特定的user_i再次查找订单记录”是从哪里来的呢?不确定我是否关注你。也许最好给我们一个你预期输出的例子,那么我们就 100% 清楚了。另请参阅上面我编辑的评论。你应该能够自己研究这个,至少尝试一些事情。如果网上还没有非常相似的例子,我会感到惊讶,甚至可能在这个网站上过去的问题中。 @ADyson 我刚刚更新了我想要的输出 所以实际上要求是“找到我 2018 年 1 月用户 12 的订单总数?” ?那是对的吗?老实说,您的问题和 cmets 中的措辞有点矛盾。请尝试 100% 清楚查询条件实际上是什么。不过,我很确定您只需要一个查询即可完成此操作。就像我说的,了解 GROUP BY 查询。 【参考方案1】:使用聚合函数count
和group by
select u.id,count(*) from Order as O inner join user as u
on O.user_id= u.id
where date>='2018-01-01' and date <'2018-02-01'
group by u.id
having count(*)>1
http://sqlfiddle.com/#!9/57c69b/1
【讨论】:
我要查找的是与 sqlfiddle.com 中每一列中的订单记录相加的总记录以上是关于如何统计用户在某个日期多次下单的订单记录? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
使用构造函数创建MyOrder 订单对象,创建 两个镀锡(orderId,订单编号,下单用户id, 订单价格,下单日期)
使用构造函数创建MyOrder 订单对象,创建 两个镀锡(orderId,订单编号,下单用户id, 订单价格,下单日期)
使用构造函数创建MyOrder 订单对象,创建 两个镀锡(orderId,订单编号,下单用户id, 订单价格,下单日期)