java - 查找产品购买间隔

标签 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. 要显示输出,请将 map 创建为 < Product, List<Customer>> productAndCustomers ,迭代这将给出结果。

  4. 遍历订单列表(从数据库中获取)以填充 map - productAndCustomers

对于每个订单——

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

获取客户详细信息并引用 customer

将此客户添加到 List<Customer>客户并检查这是否存在于 productAndCustomers 中给定 product 的 map (键)。

  1. 如果存在,则表示客户之前已经订购过该产品。更新 gap客户中的属性 [* 我如何计算 gap值(value)? *]
  2. 如果不存在,则表示客户从未订购过该产品。新建 list <Customer> customers并将此客户添加到列表并将 [key, value] 组合放入 map productAndCustomers . d.如果没有,则表示给定产品本身不存在于 map productAndCustomers 中。 .把 key product和值(value)customers使用更新的 gap 列出这张 map 值(value)。

那么我该如何计算平均差距值呢?我应该维护 pastOrderDates 的列表吗?在 orders计算它?但是我又如何拥有它,因为 gap 是特定于 product 的和 customer组合。例如Snehal 在 5 日订购了 iPhone,然后在 15 日再次订购了同样的产品。特定组合的间隔为 10 天。所以在将订单条目添加到数据库之前,我是否需要检查组合然后更新 pastOrderDates

最佳答案

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

关于java - 查找产品购买间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35887457/

相关文章:

php - 拉维尔 4 : many to many (insertion)

MySQL:每隔两行更新一次字符串

ios - 插入失败 : datatype mismatch

java - JSF、JBOSS 显示不正确

java - 按计划运行 "jmap -histo:live"来触发垃圾回收是否安全(或者是个好主意)?

java - for 循环在已编译的类文件中转换为 do while 循环

php - Mysql 添加 1 天到时间戳

mysql - 获取MYSQL中每个组的Top记录

java - 安卓长触事件

database - 限制与另一列条目相关的重复条目