我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysql中如何查询前90%的数据值

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mysql中如何查询前90%的数据值

这篇文章主要为大家展示了“mysql中如何查询前90%的数据值”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mysql中如何查询前90%的数据值”这篇文章吧。

先创建实验数据
create table t(
    query_time date,
    ts float
);


INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-29',90.04);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-29',89.24);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-29',76.08);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-29',12.66);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-29',35.08);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-29',37.42);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-29',81.86);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-29',97.03);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-29',39.57);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-29',6.75);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-29',15.05);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-29',55);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-29',29.83);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-29',84.17);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-29',31.35);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-29',4.24);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-29',27.17);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-29',23.14);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-29',34.16);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-29',1.38);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-30',4.42);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-30',17.97);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-30',76.6);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-30',29.08);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-30',15.58);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-30',90.68);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-30',6.67);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-30',61.28);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-30',86.42);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-30',48.24);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-30',81.94);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-30',64.99);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-30',79.13);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-30',0.66);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-30',65.93);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-30',27.65);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-30',40.46);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-30',19.36);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-30',75.4);
INSERT INTO `t` (`query_time`,`ts`) VALUES ('2018-06-30',18.94);


mysql中如何查询前90%的数据值

t是查询日志表.
表有两列数据,其中一列是查询时间,另外一列是 查询的时间.
查询每天 前71%,81%,91%的记录的时间.
其中的百分比是动态修改的,配置信息存放在表里.使用如下SQL模拟.
mysql中如何查询前90%的数据值
其中v是百分比,seq是排序显示的优先级.

求解SQL如下:

  1. select query_time,v,ts

  2. from (

  3.     select t6.query_time,t6.ts,v,seq,

  4.     case when @gid=concat(seq,'#',query_time) then @rn:=@rn+1 when @gid:=concat(seq,'#',query_time)    then @rn:=1 end s

  5.     from (

  6.         select query_time,ts,rn,percent,v,v-percent d,seq from (

  7.             select t2.query_time,ts,rn,rn/total percent from (

  8.                 select query_time,ts,

  9.                 case when @gid=query_time then @rn:=@rn+1 when @gid:=query_time then @rn:=1 end rn

  10.                 from (

  11.                     select * from t ,(select @gid:='',@rn:=0) vars order by query_time,ts

  12.                 ) t1

  13.             ) t2 inner join (

  14.                 select query_time,count(*) total from t group by query_time

  15.             ) t3 on(t2.query_time=t3.query_time)

  16.         ) t4 ,

  17.         (select 0.71 v,1 seq union all select 0.81,2 union all select 0.91,3) t5

  18.     ) t6 where d>=0 order by query_time,v,d

  19. ) t7 where s=1 order by query_time,seq ;


mysql中如何查询前90%的数据值

核心思路:
     1.按照日期分组,以查询时间排序,在分组内加行号.
     2.分组内行号除以每天查询的总数,可以得出本记录在全体中的百分比
     3.用配置表中配置的百分比减去第二步算出的百分比,大于0的最小记录就是我们要的结果.
这个计算过程再次使用了分组内排序加行号的操作.

性能分析
     在MySQL数据库下,这应该是这种需求性能最好的解法了.
     对于符合条件的记录进行了两遍扫描.

以上是“mysql中如何查询前90%的数据值”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mysql中如何查询前90%的数据值

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL中如何查询当前时间间隔前1天的数据

这篇文章主要介绍“MySQL中如何查询当前时间间隔前1天的数据”,在日常操作中,相信很多人在MySQL中如何查询当前时间间隔前1天的数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL中如何查询当前时
2023-06-21

php如何查询mysql中的数据数量

本文小编为大家详细介绍“php如何查询mysql中的数据数量”,内容详细,步骤清晰,细节处理妥当,希望这篇“php如何查询mysql中的数据数量”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、连接 MySQL
2023-07-05

mysql中如何查询数据库中的表名

目录查询数据库中的表名查询一个数据库中含有某关键词的表名查询数据库中所有的表总结查询数据库中的表名查询编程客栈一个数据库中含有某关键词的表名搜索一个数据库中包含一些关键字,词的表。SELECTTABLE_NAMEFROMinform
2022-12-21

mysql数据表如何查询

查询 mysql 数据表可以通过使用 select 语句来检索表中的数据。步骤如下:1. 建立连接;2. 编写 select 语句;3. 执行语句;4. 获取结果;5. 关闭连接。如何查询 MySQL 数据表回答:查询 MySQL 数据表
mysql数据表如何查询
2024-06-14

mysql如何查询数据数量

要查询数据表中的数据数量,可以使用以下SQL查询语句:SELECT COUNT(*) FROM table_name;其中,table_name是要查询的数据表的名称。这条SQL语句将返回数据表中的所有行的数量。如果只想查询符合特定条件的
mysql如何查询数据数量
2024-04-12

mysql如何查询表中所有数据

要查询MySQL表中的所有数据,可以使用SELECT语句。以下是查询表中所有数据的示例:```SELECT * FROM 表名;```其中,“*”表示查询所有列,“表名”表示要查询的表的名称。执行以上语句后,MySQL将返回该表中的所有数据
2023-09-26

mysql怎么查询当前数据库的表

要查询当前数据库的表,可以使用以下 SQL 查询语句:SHOW TABLES;这条 SQL 查询语句会返回当前选定数据库中所有的表名列表。你可以在 MySQL 命令行客户端或者任何支持 SQL 查询的工具中执行这个查询语句,以获取当前数据
mysql怎么查询当前数据库的表
2024-04-15

如何实现MySQL中查询数据的语句?

如何实现MySQL中查询数据的语句?MySQL是目前最常用的关系型数据库之一,广泛应用于开发企业级应用和网站。在使用MySQL时,最常用到的功能之一就是查询数据。本文将带你了解如何通过MySQL的查询语句来获取所需的数据,并提供具体的代码示
如何实现MySQL中查询数据的语句?
2023-11-08

编程热搜

目录