janysoun 2023-02-08 15:54 采纳率: 100%
浏览 558
已结题

计算判断数据客户是否新老客户

有一份病例数据,有挂号日期时间,姓名,电话,宠物名, 需要判断一下每个客户是新客户还是老客户,判断标准是,今天来了个客户a,那么在该表所有早于今天的数据中判断有没有该客户的记录,如果有早于今天的数据,那么就是老客户,如果首次出现 就是新客户,该怎么做?

收到了不少评论 还是差点意思的,有一种比较简便的办法就是 根据客户和宠物名分组 按照时间顺序排序 这样 1为新客户,其他的为老客户,所以说,每一个客户都有一次当新客户的机会,只有这样才能判断出老客留存率!

能理解我意思嘛?所以问题来了,除了这种方法,如何用存储过程或者拉链表去做,求教!感恩戴德

  • 写回答

15条回答 默认 最新

  • 火星的猫FM 2023-02-09 22:10
    关注

    在 MySQL 数据库中,可以使用拉链表实现新客户/老客户判断。拉链表是一种以时间为序的维表,每一行对应了一个客户的一次挂号。下面是一份示例代码:

    
    CREATE TABLE customers_history (
      customer_id INT NOT NULL AUTO_INCREMENT,
      registration_date DATE NOT NULL,
      name VARCHAR(50) NOT NULL,
      phone VARCHAR(20) NOT NULL,
      pet_name VARCHAR(50) NOT NULL,
      PRIMARY KEY (customer_id)
    );
    
    CREATE TABLE customers_status (
      customer_id INT NOT NULL,
      status ENUM('new', 'old') NOT NULL,
      PRIMARY KEY (customer_id)
    );
    
    DELIMITER //
    CREATE PROCEDURE update_customer_status()
    BEGIN
      DECLARE cur_date DATE DEFAULT CURDATE();
      
      INSERT INTO customers_status (customer_id, status)
      SELECT customer_id,
             IFNULL((SELECT 'old' FROM customers_history h WHERE h.customer_id = c.customer_id AND h.registration_date < cur_date), 'new') AS status
      FROM customers_history c
      ON DUPLICATE KEY UPDATE status = VALUES(status);
    END//
    DELIMITER ;
    
    

    这份代码创建了两张表:customers_history 和 customers_status。前者存储了客户的每次挂号信息,后者存储了客户的状态(新客户/老客户)。

    这份代码还创建了一个存储过程 update_customer_status,它每天会更新所有客户的状态。在执行这个存储过程时,会对所有客户进行遍历,并在 customers_status 表中更新对应的状态。

    如果当天有客户挂号,则在挂号时将新的挂号信息插入 customers_history 表。然后,通过执行存储过程

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(14条)

报告相同问题?

问题事件

  • 系统已结题 2月21日
  • 已采纳回答 2月13日
  • 修改了问题 2月9日
  • 创建了问题 2月8日

悬赏问题

  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c