关于寻找产品购买间隔
问题陈述:
您将获得以下数据:
查找:
对于每个产品和客户,找出连续产品购买与所有客户的平均值之间的平均差距。
预期输出:
输入数据和输出结果的数据模型。 在屏幕上显示输出如下:
+----------------+-----------+------------+
| SN |Product | Customer | AvgGap(days)
+-----------------------------------------+
| 1 | iPhone | Snehal | 21 |
| * | *** | *** | * |
| | | | |
+-----+----------+-----------+------------+
我的方法:
使用以下结构将其存储在数据库中(因为我们希望输出是产品驱动的):
+-------------+ +----------+ +--------------+
| Product <-----> | Order | <----> | Customer |
+-------------+ +----------+ +--------------+
product_id order_id customer_id
product_name product_id customer_name
price customer_id address
etc date_of_order etc
要显示输出,请创建一个地图< Product, List<Customer>>
productAndCustomers
,迭代可以得到结果。
productAndCustomers
对于每个订单 -
一个。获取产品详细信息并使用product
湾获取客户详细信息并使用customer
℃。将此客户添加到List<Customer>
客户,并检查productAndCustomers
地图中是否存在给定的product
(密钥)。
gap
属性[*如何计算gap
值? *] list <Customer> customers
并将此客户添加到列表中,并将[key,value]组合添加到地图productAndCustomers
。
d。如果它没有,则意味着地图productAndCustomers
中没有给定的产品本身。将密钥product
和值customers
列表放入此地图,其中包含更新的gap
值。那么如何计算平均差距值呢?我应该在pastOrderDates
中维护orders
的列表来计算吗?但是我又如何拥有,因为差距特定于product
和customer
组合。例如Snehal在5日订购iPhone,然后在15日再次订购。特定组合的差距为10天。因此,在向DB添加订单输入之前,是否需要检查组合,然后更新pastOrderDates
?
答案 0 :(得分:1)
这里唯一的错综复杂是计算购买之间的平均差距。如果订单具有相同客户和产品的组合,则可以在将数据插入数据库时通过维护过去的订单日期来处理。
答案 1 :(得分:1)
你要做的事对我来说似乎很不方便。 数据库部分存在,因此您不必拥有所有内容的本地列表。
首先,关于如何计算差距 a.k.a.的信息可以在Calculating the difference between two Java date instances找到时差。
关于如何找到解决问题的方法,我只是在这里给出一个基本的大纲:
customer_ID
和product_ID
加入三个表格,按customer_ID
分组,然后product_ID
分组。