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分组排名)...相关推荐

  1. mysql通过股票代码查数据_如何在交易数据中查询各个版本交易量前三的股票?(MySQL分组排名)...

    SQL查询中,根据列A分组,分组后针对列B执行统计函数,是一件常用也很重要功能,如 select T.a, max(T.b) from T order by T.a asc, T.b desc gro ...

  2. 股票接口实时交易数据怎么查询?

    股票数据接口作为软件应用而言,很多资源和数据是由自身提供的,像其他一些功能还是需要调用第三方提供的服务,这其中就涉及到股票数据接口api的调用功能,通过api来获取实时交易数据查询更方便,因此,如果交 ...

  3. 爬虫mysql数据清洗_爬虫分析之数据存储——基于MySQL,Scrapy

    配置MySql 关于MySQL在Ubuntu的Pycharm上的配置,可以参考这篇文章中的第三部分 如果上面的步骤处理完毕后找不到你新建的数据库, 可以参照下图配置 勾选要显示的Schemas(数据库 ...

  4. 数据库和python有关系吗_想问一下,数据跟代码种类有关系么? 比如我用MySQL数据库,必须要用python或者JAVA之类的要求...

    你可以访问python数据库接口及api查看详细的支持数据库列表.不同的数据库你需要下载不同的db api模块,例如你需要访问oracle数据库和mysql数据,你需要下载oracle和mysql数据 ...

  5. k8s mysql 挂载_如何在 Kubernetes 环境中搭建 MySQL(四):使用 StorageClass 挂接 RBD...

    MySQL + Kubernetes 1. 简介 在系列文章的第三篇中,讲到了如何使用 PV 和 PVC 挂载 RBD 上建立好的块存储镜像,但这还是不足以满足 cloud native 环境下的需求 ...

  6. python人工智能大数据_人工智能及大数据中的Python

    2016年,Python取代Java成为高校中最受欢迎的语言.2018年三大语言榜单中,Python陆续登上了IEEE.PYPL排行榜单之首.薪酬调查结果显示,Python开发人员是收入最高的开发人员 ...

  7. python运用在大数据中精准生活_《在大数据中“精准”生活》阅读答案

    <在大数据中"精准"生活>阅读答案 ①万物皆互联,无处不计算.因为互联网.手机.无线传感器的普及,实时监测.远程协作.SOHO工作.数据管理已成为平常之事,信息像水电一 ...

  8. mysql查询计算机系信息_在学生管理数据库中查询通信系和计算机系的所有教师信息...

    在学生管理数据库中查询通信系和计算机系的所有教师信息 答:select * from 教师 where 系部代码 in(select 系部代码 from 系部 where 系部名称 in('通信系', ...

  9. python制作股票图表怎么看_Python 数据可视化实战:使用 PyQt5 和 Echarts 打造股票数据看板...

    在一篇论文中,最吸引审稿人目光的莫过于枯燥的文字间精美的图表 在一份项目路演 ppt 中,酷炫的财务报表往往是打动投资人的最后一剂强心剂 作为数据分析最后也是最直接的一环,数据可视化的重要性不言而喻 ...

最新文章

  1. WSRP调用中的一些问题
  2. mongodb 持久化 mysql_scrapy数据持久化存储(MySQL、MongoDB)
  3. python中乘法和除法_python – NumPy的性能:uint8对比浮动和乘法与除法?
  4. sklearn自学指南(part34)--K-means
  5. 如何对待基金评审负面意见?
  6. shell自动化巡检
  7. 4005基于邻接表的顶点的删除(C++,附思路)
  8. 哈哈哈,看着问题一个个解决,很有满足感哦
  9. day11_界面闪烁处理
  10. js 分页页码 根据总条数计算有多少页,计算页码
  11. PHP判断是手机端访问还是PC端访问网站
  12. 转(解决抢购、秒杀、抢楼、抽奖等阻塞式高并发库存防控超量的思路方法)...
  13. 关于一句英文句子的词数的判断
  14. 王道考研操作系统复习笔记
  15. iOS 实现UIButton加小红点
  16. 我跟Python的孽缘
  17. logback日志不打印到文件问题深入剖析
  18. 数据寻址方式(10种)
  19. 【文献摘录】癫痫与脑电图特点
  20. 图片搜索 拍立淘 按图搜索以图搜索 图搜商品 同款搜索商品

热门文章

  1. 大声读绘本英语“RR分级阅读”,到底有什么奇妙的地方
  2. 绝!2D素材3D效果!
  3. 一夜之间全世界的WIFI都不安全了;阿里和京东线下争夺的新场景:加油站|ServiceHot一周热闻
  4. 华为od统一考试B卷【连续出牌数量】Java 实现
  5. 《Learning Scrapy》(中文版)第7章 配置和管理
  6. K线战术精要——阻击涨停板
  7. 天载优配解读对明天盘面的一些思考
  8. 联想笔记本怎么调出命令提示符_联想笔记本win7系统下怎么显示隐藏的分区
  9. 鼠标移动添加七彩泡泡效果
  10. 分割url(分割字符串)