在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

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

117次阅读
没有评论

共计 3487 个字符,预计需要花费 9 分钟才能阅读完成。

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

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

其中 v 是百分比,seq 是排序显示的优先级.

求解 SQL 如下:

select query_time,v,ts

from (

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

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

 from (

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

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

 select query_time,ts,

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

 from (

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

 ) t1

 ) t2 inner join (

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

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

 ) t4 ,

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

 ) t6 where d =0 order by query_time,v,d

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

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

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

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

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-27发表,共计3487字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 日本少妇人妻xxxxx18 | 一本伊大人香蕉高清在线观看 | 三级网站免费看 | 亚洲区精选网址 | 性欧美人与zozoxxxx视频 | 亚洲加勒比少妇无码av | 看片午夜 | 91久久青青草原免费 | 富婆如狼似虎找黑人老外 | 99av视频| 精品福利一区二区免费视频 | 福利在线视频观看 | 久久久精品人妻久久影视 | 人妻系列无码专区久久五月天 | 在教室伦流澡到高潮h麻豆 在教室伦流澡到高潮h强圩电影 | 国内亚州视频在线观看 | 亚洲精品一区 | 毛片亚洲av无码精品国产午夜 | 18禁美女黄网站色大片免费看 | 老司机亚洲精品影视www | 欧美一性一乱一交一视频 | 久久久久久久国产精品视频 | 久久精品国产74国产 | 国片一级 免费看 | 国产成人精品午夜 | 狠狠久久综合伊人不卡 | 亚洲国产成人久久综合野外 | 九月婷婷人人澡人人爽人人爱 | 亚洲国产精品一区二区第一页 | 丁香五月天综合缴情网 | 在线黄色免费观看 | 香蕉久久夜色精品国产 | 成人乱码一区二区三区 | 久久丫精品忘忧草西安产品 | 国产91网站在线观看 | 99视频精品免视看 | 免费毛片在线 | 在线毛片片免费观看 | 草久久久 | 亚洲精品第一国产综合亚av | 免费看午夜高清性色生活片 |