当前位置: 首页 > news >正文

mysql 统计连续重复值_mysql统计某列值连续出现次数小于五次的记录

表原纪录如下:

0818b9ca8b590ca3270a3433284dd417.png

需求:找出age连续出现次数少于5次的所有记录。

#建临时表

CREATE TABLE dba.t3_temp AS

SELECT

cc.age,rownum,cc.orinum,cc.id,cc.name

FROM

(SELECT

aa.id,

aa.age,

aa.name,

aa.orinum,

IF(

(aa.age = @page),

@row := @row + 1,

@row := 1

)rownum,

@page := aa.age pn

FROM (

SELECT id,age,NAME,(@rowNum:=@rowNum+1) AS orinum FROM

dba.t3 ib,

(SELECT

@row := 0,

@page := '000000') row1,

(SELECT (@rowNum :=0) ) bb )aa) cc

用途:将连续出现的age对应的rownum递增,遇到新值时,rownum赋值为1.

orinum模拟的是行号。

该临时表查询效果如下:

0818b9ca8b590ca3270a3433284dd417.png

--建个新表

CREATE TABLE dba.t3_new LIKE dba.t3;

ALTER TABLE dba.`t3_new` ADD group_idVARCHAR(100);

--存储过程

实现原理:

查询临时表rownum为1的记录数v_cnt,分为v_cnt个组。第一个rownum为1的行和第二个rownum为1的行之间(前闭后开)的记录则为第一个组.依次类推。最后一个组数据特殊些,需要额外处理一下。将group_id及相应的数据插入到新表中。

0818b9ca8b590ca3270a3433284dd417.png

DELIMITER //

CREATE PROCEDURE p6()

BEGIN

DECLARE v_cnt INT DEFAULT 1;

DECLARE v_N INT DEFAULT 1;

DECLARE v_N2 INT;

DECLARE v_cnt2 INT;

SET v_N2 = v_N - 1;

SELECT COUNT(*) INTO v_cnt

FROM dba.`t3_temp`

WHERE rownum = 1 ;

SET v_cnt2 = v_cnt - 1;

#插入前N个rownum为1的所有数据

WHILE v_N < v_cnt DO

INSERT INTO dba.`t3_new`(group_id,age,NAME,id)

SELECT v_N,age,NAME,id FROM dba.`t3_temp`

WHERE orinum >=(

SELECT orinum FROM dba.`t3_temp`

WHERE rownum = 1

ORDER BY orinum

LIMIT v_N2,1)

AND orinum <

(

SELECT orinum FROM dba.`t3_temp`

WHERE rownum = 1

ORDER BY orinum

LIMIT v_N,1

);

SET v_N = v_N + 1;

SET v_N2 = v_N2 + 1;

END WHILE;

#插入最后一个rownum为1的数据

#select v_cnt;

#select v_cnt2;

INSERT INTO dba.`t3_new`(group_id,age,NAME,id)

SELECT v_cnt,age,NAME,id FROM dba.`t3_temp`

WHERE orinum >=(

SELECT orinum FROM dba.`t3_temp`

WHERE rownum = 1

ORDER BY orinum

LIMIT v_cnt2,1)

AND orinum <=

(

SELECT orinum FROM dba.`t3_temp`

ORDER BY orinum DESC

LIMIT 1

);

END ;

//

CALL p6();

--查询连续出现相同age小于5次的记录

SELECT age,COUNT(*)

FROM dba.`t3_new`

GROUP BY group_id,age

HAVING COUNT(*)<5;

效果如下:

0818b9ca8b590ca3270a3433284dd417.png

--不当之处,欢迎指正。

相关文章:

  • mysql视图代码_MySQL视图简介与操作的介绍(附代码)
  • mysql密码存储过程_mysql设置用户名密码,存储过程,触发器
  • sqlserver mysql 乱码_SqlServer数据库中文乱码问题解决
  • oracle与mysql跨库连接_PostgreSQL+Oracle跨库连接实操
  • php mysql 域名空间_域名空间pipni.cz申请和使用攻略(MYSQL+PHP+CGI+mail+FTP)
  • mysql条件删除表中某些行数据_根据MySQL中的条件仅删除表中的某些行
  • mysql pdo rowcount_PDO rowCount()在MySQL上有效,但在SQL Server 2008 R...
  • mysql+数据库索引策略_mysql数据库索引
  • 企业组织架构mysql_[MySQL] 数据目录的组织架构
  • matlab一维搜索_工程优化设计与Matlab实现——一维搜索方法(黄金分割法)
  • mysql源码索引_Mysql中的索引
  • python3.5如何安装pip管理工具_python3.5.2安装pip管理工具
  • vue watch监听对象的属性_手把手教你深入Vue中对比computed和watch属性的区别
  • python自媒体混剪视频_自媒体短视频运营中的混剪怎么做?我们又该如何去寻找素材呢?...
  • mysql延迟同步sql_delay_彻底终结MySQL同步延迟问题
  • [译]如何构建服务器端web组件,为何要构建?
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • CAP 一致性协议及应用解析
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • CSS魔法堂:Absolute Positioning就这个样
  • Java的Interrupt与线程中断
  • Linux快速复制或删除大量小文件
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • SpiderData 2019年2月13日 DApp数据排行榜
  • text-decoration与color属性
  • Vue--数据传输
  • 前端临床手札——文件上传
  • 跳前端坑前,先看看这个!!
  • 微信小程序设置上一页数据
  • 写代码的正确姿势
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 【云吞铺子】性能抖动剖析(二)
  • scrapy中间件源码分析及常用中间件大全
  • #define
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (1)bark-ml
  • (1)SpringCloud 整合Python
  • (1)虚拟机的安装与使用,linux系统安装
  • (分布式缓存)Redis持久化
  • (太强大了) - Linux 性能监控、测试、优化工具
  • ./configure,make,make install的作用
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .Net FrameWork总结
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .NET/C# 的字符串暂存池
  • @DataRedisTest测试redis从未如此丝滑
  • [1] 平面(Plane)图形的生成算法
  • [4.9福建四校联考]
  • [Ariticle] 厚黑之道 一 小狐狸听故事