㈠ 在access中怎麼寫sql查詢語句,select查詢出一個有不同班級同學成績(很多班級)的表中,
由於SQL語言處理問題的方式是面向記錄"集合"的。解決排名這類問題對於SQL來說確實頭疼,分組排名就更不用說了! 為了解決排名問題大型資料庫系統為用戶提供了RANK、ROWNUMBER等函數,但是ACCESS不支持排名、開窗等這類函數,一般建議用編程方式解決,例如VBA等。
這個問題確實不好回答。看到樓主就同一問題已經提問幾次了,今天嘗試用SQL解決如下,供參考
首先假設數據結構如下:
students(sid,name,class)
從上述代碼來看實現這樣的效果已經很麻煩,至於學生班名次,ACCESS只能藉助編程手段了。
㈡ SQL語句排序的問題
你的寫法是錯誤的,按照你的寫法在對n進行降序排序時,第一個m升序排序結果會失效,等於最終只讀n做了降序排序,而且你的語句本身也比較冗餘。
正確的寫法是:
SELECT * FROM a ORDER BY m ASC ,n DESC;
我們可以通過一些實例來具體分析order by 子句的用法:
假設有Orders 表:
注意:在以上的結果中有兩個相等的公司名稱 (W3School)。只有這一次,在第一列中有相同的值時,第二列是以升序排列的。如果第一列中有些值為 nulls 時,情況也是這樣的。
㈢ sql 各科的成績排序怎麼排名次
各科成績的表達有兩種:
科目 成績排名 科目成績排名
數學 90 1 數學 90 1
語文 90 1 語文 90 1
政治 85 3 政治 85 2
#這是第一種的顯示
seclet科目,成績,(
selectcount(成績)+1
fromtable_namewhere成績>t.成績)
fromtable_nameast
orderby成績desc
#第二中的顯示類似可以是加distinct或者是不加distinct而用分組groupby一個意思
seclet科目,成績,(
selectcount(distinct成績)
fromtable_namewhere成績>=t.成績)
fromtable_nameast
orderby成績desc
㈣ sql中查詢排名名次
sql語句是這樣的
select count(*) from student where class=601 and score>(select score from student where name='張三')
這個就求出了在601班的張三前有多少個人,他的名就是這個返回值+1,這個問題不關排序鳥事。做個統計就行了!
你不會是要在頁面直接調用sql語句吧!
常規方法是把這個放在一個業務類傳給數據訪問層做處理後返回結果傳給頁面
你問的response.write這個有點吃力吧!
㈤ 怎麼寫一個sql語句來顯示排名
在Sqlserver2005+中:
利用:Row_Number() over(order by chengji) 可以顯示排名
--sql如句如下:
select*,row_number()over(orderbychengji)paimingfromStu
如有問題可以追問,我當及時回答。
希望能幫到你!
㈥ SQL排名語句,高手來賜教!
第一個回答的不錯,不過有些錯誤,應該在插入臨時表時,按成績的倒序插入,
查詢時按排名正序排列,同時,最後還要刪除臨時表
---按成績的倒序插入臨時表,
select id ,name,cj, identity(int,1,1) as pm
into #lsb
from 表名 order by cj desc
--按排名的正序排列
select * from #lsb order by pm
--刪除臨時表
drop table #lsb
㈦ sql 語句查詢 前5名後5名的成績
不知道你的是什麼資料庫,我用oracle的寫法了。
兩種辦法:
分別求最大和最小,然後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
利用排序,找到每個人的位置,然後輸出。排序的方法很多,可以用rownum排序,也可以用row_number()over()排序
我用row_number()over()寫一個
selecta.姓名,a.成績 from
(select row_number()over(order by 成績) num,姓名,成績 from table) a where a.num<=5 or
a.num>=(select count(*)-5 from table)
我沒實驗,不過就算有問題也應該不大。
sqlserver的版本是啥?是2005以上么?如果是
那麼利用那個row_number的應該也可以,不過為了讓分數一樣的人都出來,那麼最好改為
這種情況是假設前五齣現分數相同的話,假如前五名有六個人的情況,不過我沒有輸出名次,另外我上面的那種寫法也可以試試,sqlserver好像也可以。
不過如果你要是sql2005以前的版本那時sqlserver還沒有這幾個開窗函數,那就稍微有點麻煩了。
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
㈧ sql 排名次
你整理一個demo出來,把你的三張原始數據貼在excle中,然後再把你想要的結果貼在裡面,然後這四張圖,截圖上傳上來大家就知道你想要的了。