国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

mysql求排序后前幾名(包含并情況)

2019-11-08 02:54:47
字體:
來源:轉載
供稿:網友

/*思路** 題目:如何解決取一個班成績中前N名? 求前N名給我的第一個感覺 我想到了 sqlserver中 Top 函數 但是MySQL中并沒有這個函數。 我們先按成績排序,再找到 第N名在哪兒個位置,直接用limit N 便可以求出 那我們如果確認第N名的位置呢? 很簡單,我們按成績降序排序并分組(因為有并列情況) 生成中間表 記為 B表 此時 我們要求前 N 名 我們就取出 B表 前N條記錄 然后求個數的和。 這個和 即為 第N名的最后一個(第N名可能存在并列情況) ****/**

create PRocedure findTop3(IN topN int)begindeclare limitLen int default 0; select sum(E.b) into limitLen from( select B.* from( select count(*) as b from score group by marks order by marks desc ) as B limit topN )as E ;select * from score order by marks desc limit limitLen;end

/**********測試數據********************* score 表: mysql> select *from score; +—-+——-+ | id | marks | +—-+——-+ | 1 | 99 | | 2 | 99 | | 3 | 100 | | 4 | 99 | | 5 | 68 | | 6 | 89 | | 7 | 90 | +—-+——-+

score 表結構: +——-+———+——+—–+———+—————-+ | Field | Type | Null | Key | Default | Extra | +——-+———+——+—–+———+—————-+ | id | int(11) | NO | PRI | NULL | auto_increment | | marks | int(11) | YES | | NULL | | +——-+———+——+—–+———+—————-+

測試結果: (1)mysql> call findTop3(3); +—-+——-+ | id | marks | +—-+——-+ | 3 | 100 | | 1 | 99 | | 2 | 99 | | 4 | 99 | | 7 | 90 | +—-+——-+ (2)mysql> call findTop3(5); +—-+——-+ | id | marks | +—-+——-+ | 3 | 100 | | 1 | 99 | | 2 | 99 | | 4 | 99 | | 7 | 90 | | 6 | 89 | | 5 | 68 | +—-+——-+

**************************************************/


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 广宗县| 博湖县| 璧山县| 萨迦县| 灵璧县| 棋牌| 明溪县| 宁波市| 碌曲县| 京山县| 马鞍山市| 台中市| 阜城县| 清原| 田东县| 淮阳县| 麻城市| 宁陵县| 通海县| 兴国县| 左权县| 冷水江市| 仙居县| 绥滨县| 陇西县| 阜城县| 乌兰浩特市| 吉木乃县| 龙井市| 安仁县| 天柱县| 特克斯县| 汤原县| 龙胜| 东兰县| 平乡县| 顺平县| 顺平县| 顺平县| 湟中县| 略阳县|