第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

sql 語句查詢 前5名后5名的成績

sql 語句查詢 前5名后5名的成績

吃雞游戲 2019-04-02 01:00:06
表中就兩個字段,名字和成績。要求按成績查詢前5名后5名的數(shù)據(jù)sqlserver,要求一條語句
查看完整描述

3 回答

?
蝴蝶不菲

TA貢獻1810條經(jīng)驗 獲得超4個贊

兩種辦法:

  1. 分別求最大和最小,然后union all

    select * from(select * from table order by 成績) where rownum<=5

    union all

    select * from(select * from table order by 成績 desc) where rownum<=5

  2. 利用排序,找到每個人的位置,然后輸出。排序的方法很多,可以用rownum排序,也可以用row_number()over()排序

    我用row_number()over()寫一個

    select a.姓名,a.成績 from

    (select row_number()over(order by 成績) num,姓名,成績 from table) a where a.num<=5 or

    a.num>=(select count(*)-5 from table)

    我沒實驗,不過就算有問題也應(yīng)該不大。

sqlserver的版本是啥?是2005以上么?如果是

那么利用那個row_number的應(yīng)該也可以,不過為了讓分數(shù)一樣的人都出來,那么最好改為

這種情況是假設(shè)前五出現(xiàn)分數(shù)相同的話,假如前五名有六個人的情況,不過我沒有輸出名次,另外我上面的那種寫法也可以試試,sqlserver好像也可以。

不過如果你要是sql2005以前的版本那時sqlserver還沒有這幾個開窗函數(shù),那就稍微有點麻煩了。

select 姓名,成績 from

select rank()over(order by 成績) num,rank()over(order by 成績 desc) num_desc,姓名,成績 from table) a where a.num<=5 or a.num_desc<=5 order by 成績 desc



查看完整回答
反對 回復(fù) 2019-04-03
?
慕碼人2483693

TA貢獻1860條經(jīng)驗 獲得超9個贊

分別倒序順序排序取出5個
select top 5 * from 成績表 order by 成績 desc
select top 5 * from 成績表 order by 成績 asc

一條語句就把他們連起來就好了
select * from (select top 5 * from 成績表order by 成績 desc) as a
union all
select * from (select top 5 * from 成績表order by 成績 asc) as b

查看完整回答
反對 回復(fù) 2019-04-03
?
長風秋雁

TA貢獻1757條經(jīng)驗 獲得超7個贊

(select top 5 * from table order by 成績 )
union
(select top 5 * from table order by 成績 desc )

查看完整回答
反對 回復(fù) 2019-04-03
  • 3 回答
  • 0 關(guān)注
  • 3596 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號