mysql如何统计某数据第几次重复出现

mysql如何统计某数据第几次重复出现:

img

当符合条件如:空调格列为是,车牌号在该列第一次出现,则统计为1;空调格列为是,车牌号第二次出现,则统计为2,空调格列为否,则统一为0,要如何实现:
excel中采用的公式如下:

img

img

SELECT 
    car_number, 
    IF(is_air_conditioner = '是', @rownum := IF((SELECT COUNT(*) FROM your_table t2 WHERE t2.car_number = your_table.car_number AND t2.is_air_conditioner = '是' AND t2.id <= your_table.id) = 1, 1, @rownum + 1), 0) AS repeat_times
FROM 
    your_table, 
    (SELECT @rownum := 0) r
ORDER BY 
    car_number, id;

提供一些测试数据

你的MySQL版本是多少,如果是MySQL8的话可以使用:

SELECT *,
    CASE WHEN 空调格 = '是' THEN 
        ROW_NUMBER() OVER (PARTITION BY 车牌号, 空调格 ORDER BY 维修单号) 
    ELSE 
        0 
    END AS 重复次数
FROM 
    表名;

方式很多 order by就行

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7637654
  • 这篇博客你也可以参考下:如何对比mysql数据表的数据与excel表中数据是否重复?
  • 你还可以看下mysql参考手册中的 MySQL 错误信息和常见的问题 如果MySQL持续崩溃该怎么办
  • 除此之外, 这篇博客: 利用免费工具爬取关键词(数据)的豆瓣读书数据——八爪鱼爬取数据并导出到Excel/Mysql数据库设置示例——关键词:爬虫、读书、实用中的 需求解读 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 审题:想选几本关于数据的还不错的书看看,发现销量高的在豆瓣上大家对书的评分不一定好但豆瓣关键词搜索又没有评分排序功能还得考虑评论人数的影响这样一个个看太慢

    目标页面豆瓣、关键词数据搜索

    目标信息评分评论人数图书链接

    实施方案:利用爬取工具八爪鱼,实现数据快速抓取,并导出Excel进行快速筛选;也可以导入Mysql数据库作为本示例的一个拓展。


  • 您还可以看一下 高雯婧老师的MySQL技术大全:开发、优化与运维实战课程中的 10.5 运算符的优先级小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    我可以提供如下MySQL解决方案:

    根据问题描述,需要统计特定条件下某数据的重复次数,具体情况是,当空调格列为“是”且车牌号在该列第一次出现时,计数为1,当空调格列为“是”且车牌号在该列第二次出现时,计数为2,当空调格列为“否”时,计数为0。

    解决方案如下:

    1. 首先需要通过以下语句创建一个表来存储数据:
    CREATE TABLE `car_info` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `license_plate` varchar(10) NOT NULL,
      `air_conditioner` enum('是','否') NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
    
    1. 接下来需要创建存储过程来进行计数:
    DELIMITER $$
    CREATE PROCEDURE `count_car` (
        IN lp VARCHAR(10),
        OUT cnt INT
    )
    BEGIN
        DECLARE cur_cnt INT DEFAULT 0;
        SELECT COUNT(*) INTO cur_cnt FROM `car_info` WHERE `license_plate` = lp AND `air_conditioner` = '是';
        IF cur_cnt = 1 THEN
            SET cnt = 1;
        ELSEIF cur_cnt = 2 THEN
            SET cnt = 2;
        ELSE
            SET cnt = 0;
        END IF;
    END$$
    DELIMITER ;
    
    1. 然后通过以下语句来测试存储过程:
    SET @cnt := 0;
    CALL `count_car`('京A12345', @cnt);
    SELECT @cnt;
    

    其中'京A12345'为需要计数的车牌号,@cnt为输出参数,最后一句SELECT语句用来查询计数结果。

    希望以上解决方案对您有所帮助。