查找产品购买间隔

时间:2016-03-09 09:21:11

标签: java mysql database model

关于寻找产品购买间隔

问题陈述:

您将获得以下数据:

  • 产品清单
  • 客户列表
  • 订单清单(假设每个订单 仅包含一种产品)

查找:

对于每个产品和客户,找出连续产品购买与所有客户的平均值之间的平均差距。

预期输出:

输入数据和输出结果的数据模型。 在屏幕上显示输出如下:

+----------------+-----------+------------+
|  SN |Product   | Customer  | AvgGap(days)
+-----------------------------------------+
|  1  | iPhone   | Snehal    | 21         |
|  *  |   ***    |  ***      | *          |
|     |          |           |            |
+-----+----------+-----------+------------+

我的方法:

  1. 创建一个API,以便从用户那里收集有关客户,产品和存储到数据库中的所有订单的数据。
  2. 使用以下结构将其存储在数据库中(因为我们希望输出是产品驱动的):

       +-------------+         +----------+        +--------------+
       | Product      <----->  |  Order   | <----> |  Customer    |
       +-------------+         +----------+        +--------------+
    
        product_id               order_id             customer_id
        product_name             product_id           customer_name
        price                    customer_id          address
        etc                      date_of_order        etc
    

  3. 要显示输出,请创建一个地图< Product, List<Customer>> productAndCustomers,迭代可以得到结果。

  4. 遍历订单列表(从数据库中提取)以填充地图 - productAndCustomers
  5. 对于每个订单 -

    一个。获取产品详细信息并使用product

    进行推荐

    湾获取客户详细信息并使用customer

    进行推荐

    ℃。将此客户添加到List<Customer>客户,并检查productAndCustomers地图中是否存在给定的product(密钥)。

    1. 如果存在,意味着客户之前已订购过该产品。更新客户中的gap属性[*如何计算gap值? *]
    2. 如果不存在,则表示客户从未订购此产品。创建新的list <Customer> customers并将此客户添加到列表中,并将[key,value]组合添加到地图productAndCustomers。 d。如果它没有,则意味着地图productAndCustomers中没有给定的产品本身。将密钥product和值customers列表放入此地图,其中包含更新的gap值。
    3. 那么如何计算平均差距值呢?我应该在pastOrderDates中维护orders的列表来计算吗?但是我又如何拥有,因为差距特定于productcustomer组合。例如Snehal在5日订购iPhone,然后在15日再次订购。特定组合的差距为10天。因此,在向DB添加订单输入之前,是否需要检查组合,然后更新pastOrderDates

2 个答案:

答案 0 :(得分:1)

这里唯一的错综复杂是计算购买之间的平均差距。如果订单具有相同客户和产品的组合,则可以在将数据插入数据库时​​通过维护过去的订单日期来处理。

答案 1 :(得分:1)

你要做的事对我来说似乎很不方便。 数据库部分存在,因此您不必拥有所有内容的本地列表。

首先,关于如何计算差距 a.k.a.的信息可以在Calculating the difference between two Java date instances找到时差。

关于如何找到解决问题的方法,我只是在这里给出一个基本的大纲:

  1. 使用customer_IDproduct_ID加入三个表格,按customer_ID分组,然后product_ID分组。
  2. 选择包含2个或更多元素的所有组,并计算购买之间的差距并相应保存。
  3. 计算每种产品的平均值。