返回顶部
首页 > 资讯 > 数据库 >mysql中如何查询前90%的数据值
  • 845
分享到

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

2024-04-02 19:04:59 845人浏览 独家记忆
摘要

这篇文章主要为大家展示了“Mysql中如何查询前90%的数据值”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“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%的数据值”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: mysql中如何查询前90%的数据值

本文链接: https://lsjlt.com/news/62290.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • mysql中如何查询前90%的数据值
    这篇文章主要为大家展示了“mysql中如何查询前90%的数据值”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mysql中如何查询前90%的数据值”这篇文章吧。 ...
    99+
    2024-04-02
  • mysql中如何查询前50%的数据
    这篇文章给大家分享的是有关mysql中如何查询前50%的数据的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 实验环境: create ta...
    99+
    2024-04-02
  • MySQL中如何查询当前时间间隔前1天的数据
    这篇文章主要介绍“MySQL中如何查询当前时间间隔前1天的数据”,在日常操作中,相信很多人在MySQL中如何查询当前时间间隔前1天的数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL中如何查询当前时...
    99+
    2023-06-21
  • oracle如何查询sequence当前值
    要查询Oracle序列(sequence)的当前值,可以使用以下查询语句: SELECT last_number FROM ...
    99+
    2024-04-09
    oracle
  • php如何查询mysql中的数据数量
    本文小编为大家详细介绍“php如何查询mysql中的数据数量”,内容详细,步骤清晰,细节处理妥当,希望这篇“php如何查询mysql中的数据数量”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、连接 MySQL ...
    99+
    2023-07-05
  • mysql如何查询空值
    本篇内容介绍了“mysql如何查询空值”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • MySQL中查询当前时间间隔前1天的数据
    1.背景 实际项目中我们都会遇到分布式定时任务执行的情况,有时定时任务执行的时候如果查询的数据量比较大时,我们会选择执行时间间隔几天前的数据筛选后进行执行。 避免执行全量的数据导致内...
    99+
    2024-04-02
  • 如何查询php mysql的数据
    如何查询php mysql的数据?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。php mysql查询数据的方法:首先创建php mysql...
    99+
    2024-04-02
  • MySQL是如何查询数据的
    本篇内容介绍了“MySQL是如何查询数据的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!上一篇我们说到了关...
    99+
    2024-04-02
  • 如何查询mysql的数据库
    本篇内容介绍了“如何查询mysql的数据库”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • mysql查询前30条数据的方法
    这篇文章将为大家详细讲解有关mysql查询前30条数据的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。mysql查询前30条数据的方法:可以通过执行【SELEC...
    99+
    2024-04-02
  • oracle如何查询序列当前值
    在Oracle中,要查询序列的当前值,可以使用如下的SQL语句: SELECT sequence_name.CURRVAL ...
    99+
    2024-04-09
    oracle
  • mysql数据表如何查询
    查询 mysql 数据表可以通过使用 select 语句来检索表中的数据。步骤如下:1. 建立连接;2. 编写 select 语句;3. 执行语句;4. 获取结果;5. 关闭连...
    99+
    2024-06-14
    mysql
  • mysql如何查询数据数量
    要查询数据表中的数据数量,可以使用以下SQL查询语句: SELECT COUNT(*) FROM table_name; ...
    99+
    2024-04-12
    mysql
  • mysql中如何查询数据库中的表名
    目录查询数据库中的表名查询一个数据库中含有某关键词的表名查询数据库中所有的表总结查询数据库中的表名 查询一个数据库中含有某关键词的表名 搜索一个数据库中包含一些关键字,词的表。 SELECT TABLE_NA...
    99+
    2022-12-21
    mysql查询 查询数据库的表名 mysql查询表名
  • mysql如何查询字段值
    这篇文章主要介绍mysql如何查询字段值,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! mysql查询字段值的方法:1、使用“SELECT * F...
    99+
    2024-04-02
  • mysql如何查询最大值
    本篇内容介绍了“mysql如何查询最大值”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • mysql如何查询最小值
    这篇文章主要介绍“mysql如何查询最小值”,在日常操作中,相信很多人在mysql如何查询最小值问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql如何查询最小值”的疑惑...
    99+
    2024-04-02
  • mysql如何查询表中所有数据
    要查询MySQL表中的所有数据,可以使用SELECT语句。以下是查询表中所有数据的示例:```SELECT * FROM 表...
    99+
    2023-09-26
    mysql
  • mysql如何查询今天的数据
    mysql如何查询今天的数据?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!mysql查询今天的数据的方法:【SELEC&#...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作