mysql 股票_如何在交易数据中查询各个版本交易量前三的股票?(MySQL分组排名)...
SQL查询中,根据列A分组,分组后针对列B执行统计函数,是一件常用也很重要功能,如
select T.a, max(T.b) from T order by T.a asc, T.b desc group by T.a
select T.a, count(T.b) from T order by T.a asc, T.b desc group by T.a
一直这样写SQL,直到有一天,一个做股票的朋友(非IT人事)和我聊天,说他自己用Python整了点数据,想分析下每个版块成交量前三的股票,问我知不知道怎么用SQL查出来(这是一个分组排名取若干首级的需求)。老实说,这个问题很常见,但是脑子刹那间有点懵逼,回来的路上一直想这个问题,若干年前用SQLServer时,有个分组方法ROW_NUMBER() OVER(),貌似可以实现这个分组排名功能。
语法格式:row_number() over(partition by 分组列 order by 排序列 desc)
与是网上搜了下MySQL 的实现,果然一堆朋友记录过。参照了一篇CSDN微博“Mysql实现ROW_NUMBER() OVER()” 的内容,将实现过程记录如下。
先看下表结构:
view_market_trade_amt有三列,第一列是指数,第二列是股票代码,第三列是成交量。
需求是将各个指数板块的成交前三的股票查出来。
实现MySQL rownum() over()之前,需要先了解下这种实现方式的思想:根据分组列排序后,定义rownum标记,rownum的标记随着分组列变化而变化,分组列值相同时,rownum不变,最后每个分组列形成一个rownum序列,之后根据rownum序列筛选排名。
定义rownum
select v.stockCode,v.tradeIndex,v.amount,
if(@grpvar=v.tradeIndex,@rownum:=@rownum+1,@rownum:=1) as rownum, @grpvar:=v.tradeIndex
from (select stockCode,tradeIndex,amount from view_market_trade_amt order by tradeIndex asc ,amount desc) v ,
(select @grpvar := null ,@rownum:=0) vardef
vardef是定义分组变量和rownum变量,分别默认赋值null和0;
grpvar赋值tradexIndex,同时判断当前记录的tradeIndex和该变量是否相等,如果相等则rownum+1,否则从1开始赋值。
查询结果:
可以看到,不同的tradeIndex,对应rownum序列都是独立。
根据rownum筛选记录
这一步就简单的多了,基于上面的继续,筛选出rownum小于3的即可。
select tradeIndex, stockCode, amount from (
select v.stockCode,v.tradeIndex,v.amount,
if(@grpvar=v.tradeIndex,@rownum:=@rownum+1,@rownum:=1) as rownum, @grpvar:=v.tradeIndex
from (select stockCode,tradeIndex,amount from view_market_trade_amt order by tradeIndex asc ,amount desc) v ,
(select @grpvar := null ,@rownum:=0) vardef
) as result
where result.rownum<=3
mysql 股票_如何在交易数据中查询各个版本交易量前三的股票?(MySQL分组排名)...相关推荐
- mysql通过股票代码查数据_如何在交易数据中查询各个版本交易量前三的股票?(MySQL分组排名)...
SQL查询中,根据列A分组,分组后针对列B执行统计函数,是一件常用也很重要功能,如 select T.a, max(T.b) from T order by T.a asc, T.b desc gro ...
- 股票接口实时交易数据怎么查询?
股票数据接口作为软件应用而言,很多资源和数据是由自身提供的,像其他一些功能还是需要调用第三方提供的服务,这其中就涉及到股票数据接口api的调用功能,通过api来获取实时交易数据查询更方便,因此,如果交 ...
- 爬虫mysql数据清洗_爬虫分析之数据存储——基于MySQL,Scrapy
配置MySql 关于MySQL在Ubuntu的Pycharm上的配置,可以参考这篇文章中的第三部分 如果上面的步骤处理完毕后找不到你新建的数据库, 可以参照下图配置 勾选要显示的Schemas(数据库 ...
- 数据库和python有关系吗_想问一下,数据跟代码种类有关系么? 比如我用MySQL数据库,必须要用python或者JAVA之类的要求...
你可以访问python数据库接口及api查看详细的支持数据库列表.不同的数据库你需要下载不同的db api模块,例如你需要访问oracle数据库和mysql数据,你需要下载oracle和mysql数据 ...
- k8s mysql 挂载_如何在 Kubernetes 环境中搭建 MySQL(四):使用 StorageClass 挂接 RBD...
MySQL + Kubernetes 1. 简介 在系列文章的第三篇中,讲到了如何使用 PV 和 PVC 挂载 RBD 上建立好的块存储镜像,但这还是不足以满足 cloud native 环境下的需求 ...
- python人工智能大数据_人工智能及大数据中的Python
2016年,Python取代Java成为高校中最受欢迎的语言.2018年三大语言榜单中,Python陆续登上了IEEE.PYPL排行榜单之首.薪酬调查结果显示,Python开发人员是收入最高的开发人员 ...
- python运用在大数据中精准生活_《在大数据中“精准”生活》阅读答案
<在大数据中"精准"生活>阅读答案 ①万物皆互联,无处不计算.因为互联网.手机.无线传感器的普及,实时监测.远程协作.SOHO工作.数据管理已成为平常之事,信息像水电一 ...
- mysql查询计算机系信息_在学生管理数据库中查询通信系和计算机系的所有教师信息...
在学生管理数据库中查询通信系和计算机系的所有教师信息 答:select * from 教师 where 系部代码 in(select 系部代码 from 系部 where 系部名称 in('通信系', ...
- python制作股票图表怎么看_Python 数据可视化实战:使用 PyQt5 和 Echarts 打造股票数据看板...
在一篇论文中,最吸引审稿人目光的莫过于枯燥的文字间精美的图表 在一份项目路演 ppt 中,酷炫的财务报表往往是打动投资人的最后一剂强心剂 作为数据分析最后也是最直接的一环,数据可视化的重要性不言而喻 ...
最新文章
- WSRP调用中的一些问题
- mongodb 持久化 mysql_scrapy数据持久化存储(MySQL、MongoDB)
- python中乘法和除法_python – NumPy的性能:uint8对比浮动和乘法与除法?
- sklearn自学指南(part34)--K-means
- 如何对待基金评审负面意见?
- shell自动化巡检
- 4005基于邻接表的顶点的删除(C++,附思路)
- 哈哈哈,看着问题一个个解决,很有满足感哦
- day11_界面闪烁处理
- js 分页页码 根据总条数计算有多少页,计算页码
- PHP判断是手机端访问还是PC端访问网站
- 转(解决抢购、秒杀、抢楼、抽奖等阻塞式高并发库存防控超量的思路方法)...
- 关于一句英文句子的词数的判断
- 王道考研操作系统复习笔记
- iOS 实现UIButton加小红点
- 我跟Python的孽缘
- logback日志不打印到文件问题深入剖析
- 数据寻址方式(10种)
- 【文献摘录】癫痫与脑电图特点
- 图片搜索 拍立淘 按图搜索以图搜索 图搜商品 同款搜索商品