mysql 统计_mysql数据统计级别技巧
本文提及技巧只适用数据统计,OLAP场景,不建议用于业务sql。
分组top问题
知识点:巧用局部变量,实现Hive窗口分析函数功能row_number() over(partition by exam_id)
题目:如下表,记录每个学生的成绩,用sql求出每班前五名的学生id和成绩。
create table student( id int(11) comment "学生id", class int(3) comment "班级", score int(3) comment "成绩");
解答1:巧用临时变量
划重点:mysql的临时变量赋值顺序是:from --> select,select子句字段按从上到下顺序执行。
select id, class, scorefrom ( select id, class , score, if(@cur_class <> class, @seq:=0, null) temp_seq, if(@cur_class=class and @last_score <> score,@seq:=@seq+1,@seq) as seq , @cur_class:=class, @last_score:=score from student a ,(select @cur_class:=0,@seq:=0, @last_score:=0) t0 order by class asc , score desc) t1 where t1.seq <= 5;
解答2:使用子查询
select t1.id, t1.class, t1.scorefrom student t1where (select count(1) c from student t2 where t2.class = t1.class and t2.score >= t1.score ) <= 5
前后记录关联——求次日留存
题目:如下表,记录用户访问流水,求次日留存率。
create table visit_log( userId int(20) comment "用户id", visitDate datetime comment "访问时间");
思路:次日留存率 = 交集(当天访问用户 和 下一天访问用户)/ 当天访问用户数
解答:
select date_format(visitDate, "%Y-%m-%d") as `日期`, count(distinct if(date_format(user_next_date, "%Y-%m-%d")) = date_format(date_add(visitDate,interval 1 day), "%Y-%m-%d"),uid , null )) / count(distinct uid ) as `次日留存率`from ( select visitDate, uid , -- 查出当前记录用户,下一次访问日期 (select min(visitDate) from visit_log where date_add(date_format(a.visitDate , "%Y-%m-%d 00:00:00"),interval 1 day) and a.userId = userId ) from visit_log a ) a group by date_format(visitDate, "%Y-%m-%d");
mysql 统计_mysql数据统计级别技巧相关推荐
- 移动互联网数据分析 移动客户端流量统计 移动客户端数据统计(一)
移动互联网数据分析 移动客户端流量统计 移动客户端数据统计 原创文章,转载请注明原地址 http://blog.csdn.net/stevenprime 在这个公司两年多了,期间做了移动客户端数据分析 ...
- MySql下大数据量级别(1000万+)优化查询和操作方法
MySql下大数据量级别(1000万+)优化查询和操作方法 一.[原则一]: insert into tb (...) values(...),(...)...; 要比 insert into tb ...
- 用mysql触发器做数据统计
一 .具体实现 文件表: create table if not exists `file` ( `Name` varchar(255) NOT NULL, `Bucket` varchar(255) ...
- python怎么分组统计_python 数据统计,分组的一些小技巧
(点击上方公众号,可快速关注)html 来源:KillerManA前端 连接:http://www.jianshu.com/p/e792eea5056cjava 最近在用python作数据统计,这里总 ...
- mysql多对一数据统计
需求:现在我们现在有一个托运单表和整车表,托运单表的字段有送货类型 1自提:还 2配送有一个托运单包含多件货物. 一辆整车运输的时候包含多张托运单,一个托运单也可能多辆车送.现在需要分页显示每一辆整车 ...
- mysql 计算成功率_mysql数据统计技巧备忘录
mysql 作为常用数据库,操作贼六是必须的,对于数字操作相关的东西,那是相当方便,本节就来拎几个统计案例出来供参考! order订单表,样例如下: CREATE TABLE`t_order` ( ` ...
- mysql 性能统计_MySql 的统计查询性能问题
由于数据量非常大(单表:四五百万条数据),需要对这种类型的表进行统计查询,并插入到对应的Maxstatistics(里面是Id.Value.Time) MinStatistics 等表. 这个表的结构 ...
- mysql多字段数据统计_超详细的mysql元数据sql统计--information_schema
概述 information_schema 数据库跟 performance_schema 一样,都是 MySQL 自带的信息数据库.其中 performance_schema 用于性能分析,而 in ...
- mysql 事件统计_mysql事件统计之PERFORMANCE_SCHEMA基础详解
概述 MySQL 5.5开始新增一个数据库:PERFORMANCE_SCHEMA,主要用于收集数据库服务器性能参数.并且库里表的存储引擎均为PERFORMANCE_SCHEMA,而用户是不能创建存储引 ...
最新文章
- AI回溯过去解决复杂任务 |《自然》论文
- 表的插入、更新、删除、合并操作_18_清空表中记录
- TinyUI组件开发示例
- 哪个计算机无法做到双屏显示,怎么启用双屏显示设置【图文介绍】
- word中的图片设定成统一文字环绕格式
- php打包mysql_PHP封装MySQL的单例
- ubuntu 16.04下git的安装与使用
- delphi2010中FastReport的安装方法
- (九)java多线程之CyclicBarrier
- vaniglia 源码学习(一)
- OneNET麒麟座应用开发之五:获取加速度传感器ADXL345数据
- QT运行时加载UI文件
- Android 笔记 json GSON,Android中使用Gson解析JSON数据
- aspose.pdf-17.8暴力破解,附破解过程和使用代码。仅供参考,不可用于商业用途
- 使用 dva 如何配置异步加载路由组件
- missing separator 解决方法
- java实时获取android网速_Android实现网速实时监测工具类
- 【Faster R-CNN论文精度系列】从Faster R-CNN源码中,我们“学习”到了什么?
- 九大微博传播分析工具
- 8:操作模式1-boot mode
热门文章
- android多屏幕适配资源生成,android – 多屏幕适配相关
- python修改文件内容最后一行_关于python:如何修改文件的最后一行?
- hexo博客生成博文,当生成的文章数量超过1000时,耗尽所有内存资源后出现out of memory
- CountDownLatch、CyclicBarrier、Semaphore的区别,你知道吗?
- 深入理解Java虚拟机-Java内存区域透彻分析
- 蓝桥杯-前缀表达式(java)
- php url怎么加前缀,php – 在Laravel 5中为现有URL添加前缀
- java xpath 命名空间_【转】玩转 XPath 和缺省命名空间(Default Namespaces)
- 错误The type XXX is deprecated解决
- 分析JDK中的Runtime的单例设计模式以及使用小例子