查詢總成績的前3名
⑴ SQL語句如何查詢成績的前三名帶成績重復的
select * from table where 成績 in (select top 3 distinct 成績 from table order by 成績 desc) order by 成績 desc
下面這個效率要高內點容
select * from table where 成績 >= (select min(成績) from(select top 3 distinct 成績 from table)) order by 成績 desc
⑵ oracle中的sql求總分前三名
可以用row_number來查詢。
1、創建數據表,插入數據:
createtablesc
(idint,
namevarchar(20),
classvarchar(20),
scoreint);
insertintoscvalues(1,'badkano','一年一班',100);
insertintoscvalues(2,'網路知道團長','一年一班',99);
insertintoscvalues(3,'小短','一年一班',95);
insertintoscvalues(4,'小小動','一年一班',97);
insertintoscvalues(5,'小智','一年一班',80);
insertintoscvalues(6,'呂布','一年二班',67);
insertintoscvalues(7,'趙雲','一年二班',90);
insertintoscvalues(8,'典韋','一年二班',89);
insertintoscvalues(9,'關羽','一年二班',70);
insertintoscvalues(10,'馬超','一年二班',98);
commit;
2、查詢分數的前三名,可用以下語句:
select*from
(selectrow_number()over(orderbyscoredesc)rn,sc.*fromsc)
wherern<=3;
3、結果顯示:
⑶ 請教sql語言,如何查詢前三名學生......
信息沒給足,, 成績表通過什麼欄位和st_info 以及 c_info關聯呢??
以上信息不足,沒法直接給內你容寫完整的sql,只能給你個大致的語句供參考
select top 3 st_name,score from st_info,s_c_info..... where ......
order by score desc
⑷ access2003 查找各科成績80分以上的學生的總成績,並顯示前三名如何設定
查詢窗體的設計視圖請參照下圖:
下面是上圖對應的查詢窗體的SQL視圖。。
SELECTTOP3姓名專,數學,語文屬,英語,Val([數學])+Val([語文])+Val([英語])AS總成績
FROM成績表
GROUPBY姓名,數學,語文,英語
HAVING數學>"80"AND語文>"80"AND英語>"80"
ORDERBYVal([數學])+Val([語文])+Val([英語])DESC;
⑸ mysql版 查詢各科成績前三名的記錄:(不考慮成績並列情況)
上面那條答案應該是可以的啊,可能是看起來復雜了點吧,我自己試過版是沒問題的:
SELECT t1.sno,t1.cno,Score
FROM SC t1
WHERE EXISTS
(SELECT COUNT(1)
FROM SC
WHERE t1.cno= cno AND t1.score<score
HAVING COUNT(1)<3)
ORDER BY t1.cno,score DESC
另外還有一種權類似的寫法:
SELECT t1.sno,t1.cno,Score
FROM SC t1
WHERE
(SELECT COUNT(cno)
FROM SC
WHERE t1.cno= cno AND t1.score<score)<3
ORDER BY t1.cno,score DESC
⑹ 用sql語句,查詢每個班級成績排名前三名的學生姓名
1、首先在打開的SQLServer中,假設有兩條數據中,包含有【張】,但是這個張一前一後,如專下圖所屬示。
⑺ SQL語句:查詢各班成績前3的同學姓名
分析如下:
可以用row_number函數來解決。
1、創建測試表,插入數據:
(資料來源:網路:SQL語句)
⑻ mysql中一張學生表,查詢出單科成績前十名學生的所有信息 和總分成績前十名學生的所有信息 在線等
學生表名為:student, 單科成績的欄位為:subject。學生名字為:name
查詢單科成績前十:mysql語句為:select * from student order by subject desc limit 10;
查詢總分成績前十:mysql語句為:select sum(subject) subject,name from student group by name order by subject desc limit 10;
註:
select sum(subject) subject,name
這句的意思是:sum(subject) subject 把單科成績加總用subject 來命名(就是總成績),name就是一個欄位,這里只有兩個欄位。
group by name order by subject : group by name 的意思按照名字這一欄來分組,當然,學生成績表名字有可能是一樣的,按照學號是最准確的,這里只是舉個例子。
order by subject 這句的意思是按照總分成績排序,這里的subject 是前面重命名總分的意思。
select sum(subject) as countsubject,name from student group by name order by countsubject desc limit 10;
(8)查詢總成績的前3名擴展閱讀:
學生成績表常用sql
1. 在表中插入符合主鍵
[sql]
/*成績表*/
CREATE TABLE SC
(
Sid INT REFERENCES Student(Sid), /*學生學號*/
Cid INT REFERENCES Course(Cid), /*課程編號*/
Score INT NOT NULL, /*課程分數*/
PRIMARY KEY(Sid,Cid) /*將學生學號和課程編號設為復合主鍵*/
)
2. 查詢各科成績最高分,最低分以及平均分
[sql]
SELECT c.Cname, MAX(s.Score) AS Max, MIN(s.Score) AS Min, AVG(s.Score) AS Average
FROM Course c JOIN SC s ON c.Cid = s.Cid
GROUP BY c.Cname
/*此處應注意,若不按照c.Cname進行分組,SQL語句會報錯,c.Cname在SELECT語句中不合法,因為它並未出現在聚合函數中也沒有出現在GROUP BY語句中*/
3. 查詢平均成績大於80分的學生姓名以及平均成績
[sql]
SELECT Sname, AVG(Score) AS Average FROM Student JOIN SC
ON Student.Sid=SC.Sid
GROUP BY Sname
HAVING AVG(Score)>80
/*以聚合函數為條件進行刪選只能在HAVING語句中進行,WHERE語句不支持聚合函數*/
4.按總分為學生排名,總分相同名次相同
[sql]
SELECT RANK() OVER (ORDER BY SUM(ss.Score) DESC) AS Rank, s.Sname,
ISNULL(SUM(ss.Score),0)
FROM Student s LEFT JOIN SC ss
ON s.Sid = ss.Sid
GROUP BY s.Sname
ORDER BY SUM(ss.Score) DESC
/*RANK()是SQL Server的一個built-in函數,語法為
RANK() OVER ( [ partition_by_clause ] order_by_clause ).*/
5. 查詢總分在100至200之間的學生姓名及總分
[sql]
SELECT s.Sname,SUM(ss.Score) FROM Student s JOIN SC ss ON s.Sid=ss.Sid
GROUP BY s.Sname HAVING SUM(ss.Score) BETWEEN 100 AND 200
⑼ Mysql 單表查詢各班級總分前三名
select class,total,name from (select *,ywsc+sxsc as total from st ORDER BY total DESC) b
where
not EXISTS(select * from (select *,ywsc+sxsc as total from st ORDER BY total DESC) c where c.class=b.class and b.total < c.total GROUP BY c.class HAVING COUNT(*)>2 )
ORDER BY b.class,b.total DESC
⑽ 用sql語句,查詢每個班級成績排名前三名的學生姓名
1、首先在打開的SQLServer中,假設有兩條數據中,包含有【張】,但是這個張一前一後,如下圖所示。