关于寻找产品购买间隔
问题陈述:
您得到以下数据:
- 产品列表
- 客户名单
- 订单列表(假设每个订单 仅包含一种产品)
查找:
对于每个产品和客户,找出连续产品购买与所有客户的平均值之间的平均差距。
预期输出:
输入数据和输出结果的数据模型。 在屏幕上显示输出如下:
+----------------+-----------+------------+
| SN |Product | Customer | AvgGap(days)
+-----------------------------------------+
| 1 | iPhone | Snehal | 21 |
| * | *** | *** | * |
| | | | |
+-----+----------+-----------+------------+
我的方法:
- 创建一个 API 以从用户那里收集有关客户列表、产品和所有下订单的数据以存储到数据库中。
使用如下结构将其存储在数据库中(因为我们希望输出是产品驱动的):
+-------------+ +----------+ +--------------+ | Product <-----> | Order | <----> | Customer | +-------------+ +----------+ +--------------+ product_id order_id customer_id product_name product_id customer_name price customer_id address etc date_of_order etc
要显示输出,请将 map 创建为
< Product, List<Customer>>
productAndCustomers
,迭代这将给出结果。- 遍历订单列表(从数据库中获取)以填充 map -
productAndCustomers
对于每个订单——
一个。获取产品详细信息并引用 product
获取客户详细信息并引用 customer
将此客户添加到 List<Customer>
客户并检查这是否存在于 productAndCustomers
中给定 product
的 map (键)。
- 如果存在,则表示客户之前已经订购过该产品。更新
gap
客户中的属性 [* 我如何计算gap
值(value)? *] - 如果不存在,则表示客户从未订购过该产品。新建
list <Customer> customers
并将此客户添加到列表并将 [key, value] 组合放入 mapproductAndCustomers
. d.如果没有,则表示给定产品本身不存在于 mapproductAndCustomers
中。 .把 keyproduct
和值(value)customers
使用更新的gap
列出这张 map 值(value)。
那么我该如何计算平均差距值呢?我应该维护 pastOrderDates
的列表吗?在 orders
计算它?但是我又如何拥有它,因为 gap 是特定于 product
的和 customer
组合。例如Snehal 在 5 日订购了 iPhone,然后在 15 日再次订购了同样的产品。特定组合的间隔为 10 天。所以在将订单条目添加到数据库之前,我是否需要检查组合然后更新 pastOrderDates
?
最佳答案
这里唯一复杂的是计算购买之间的平均差距。如果订单具有相同客户和产品的组合,则可以在将数据插入数据库时通过维护过去的订单日期来处理。
关于java - 查找产品购买间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35887457/