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

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

有一份病例数据,有挂号日期时间,姓名,电话,宠物名, 需要判断一下每个客户是新客户还是老客户,判断标准是,今天来了个客户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 想用@vueuse 把项目动态改成深色主题,localStorge里面的vueuse-color-scheme一开始就给我改成了dark,不知道什么原因(相关搜索:背景颜色)
  • ¥20 OPENVPN连接问题
  • ¥15 flask实现搜索框访问数据库
  • ¥15 mrk3399刷完安卓11后投屏调试只能显示一个设备
  • ¥20 白日门传奇少一个启动区服和启动服务器的快捷键,东西都是全的 , 他们说套一个出来就行了 但我就是弄不好,谁看看,
  • ¥100 如何用js写一个游戏云存档
  • ¥15 ansys fluent计算闪退
  • ¥15 有关wireshark抓包的问题
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
  • ¥15 向数据表用newid方式插入GUID问题