91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在交易數據中查詢各個版本交易量前三的股票?(MySQL分

發布時間:2020-04-28 21:30:21 來源:網絡 閱讀:348 作者:layveen 欄目: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分

實現MySQL rownum() over()之前,需要先了解下這種實現方式的思想:根據分組列排序后,定義rownum標記,rownum的標記隨著分組列變化而變化,分組列值相同時,rownum不變,最后每個分組列形成一個rownum序列,之后根據rownum序列篩選排名。

  1. 定義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開始賦值。
查詢結果:
如何在交易數據中查詢各個版本交易量前三的股票?(MySQL分

如何在交易數據中查詢各個版本交易量前三的股票?(MySQL分

可以看到,不同的tradeIndex,對應rownum序列都是獨立。

  1. 根據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分

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安阳市| 彭山县| 朝阳区| 南平市| 塔城市| 三河市| 柳河县| 突泉县| 酒泉市| 两当县| 东山县| 社会| 巫溪县| 紫金县| 团风县| 滁州市| 陵川县| 新龙县| 寻甸| 舞钢市| 万宁市| 奇台县| 阳高县| 北票市| 海盐县| 濮阳市| 莱芜市| 焦作市| 法库县| 克什克腾旗| 保山市| 灵武市| 太谷县| 阿勒泰市| 泗阳县| 务川| 托里县| 资兴市| 太原市| 长春市| 甘谷县|