查詢學生各門成績前三名
『壹』 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語句:查詢各班成績前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;
(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
『肆』 SQL查詢每門成績前十學生
select top 10
from CJ
where sub = '語文'
union with
select top 10
from CJ
where sub = '數學'
select top 10
from CJ
where sub = '物理內容'
union with
『伍』 php怎麼各科查前三名的學生的成績
Order by 成績 desc limit 3
『陸』 access2003 查找各科成績80分以上的學生的總成績,並顯示前三名如何設定
查詢窗體的設計視圖請參照下圖:
下面是上圖對應的查詢窗體的SQL視圖。。
SELECTTOP3姓名專,數學,語文屬,英語,Val([數學])+Val([語文])+Val([英語])AS總成績
FROM成績表
GROUPBY姓名,數學,語文,英語
HAVING數學>"80"AND語文>"80"AND英語>"80"
ORDERBYVal([數學])+Val([語文])+Val([英語])DESC;
『柒』 用sql語句,查詢每個班級成績排名前三名的學生姓名
1、首先在打開的SQLServer中,假設有兩條數據中,包含有【張】,但是這個張一前一後,如下圖所示。
『捌』 SQL 查詢各門成績前兩名的學生
你先抽一條數據來反過來理解這條SQL
比如 你表格里的第一條:陳六、政治
SQL里的子句你內把t.subject 替換成 我們這條數據真容實的值,就可以看出來
select top 2 stu_id from stu_score where subject='政治' order by score desc
就是查詢我當前這條記錄對應的subject(政治)里,成績最高的兩條數據的 stu_id。
我再提供一種寫法給你
select*from(
selectt1.*,row_number()over()asfidfromstu_score)wherefid<=2
這種寫法主要是row_number() over(partition by subject order by score desc),
意思是:我按照subject 分組,根據score排序從大到小,分別標出序號fid。也就是我把不同subject的成績按從大到小排序,然後外層再取各自的前兩名
『玖』 sql語句 每科成績的前三名
可以用row_number函數來解決。
1、創建測試表,插入數據:
create table sc
(id int,
name varchar(20),
class varchar(20),
score int);
insert into sc values (1,'badkano','一年一班',100)
insert into sc values (2,'網路知道團長','一年一班',99)
insert into sc values (3,'小短','一年一班',95)
insert into sc values (4,'小小動','一年一班',97)
insert into sc values (5,'小智','一年一班',80)
insert into sc values (6,'呂布','一年二班',67)
insert into sc values (7,'趙雲','一年二班',90)
insert into sc values (8,'典韋','一年二班',89)
insert into sc values (9,'關羽','一年二班',70)
insert into sc values (10,'馬超','一年二班',98)
2、查詢每個班級的前三名,可用語句:
select * from
(select row_number() over (partition by class order by score desc) 排名,* from sc) t
where 排名<=3 order by class asc,score desc
『拾』 mysql 查詢每門成績的前十名
mysql 查詢每門成績的前十名
create table sc
(sno int,
cno int,
score);
insert into sc values (1,1,100);
insert into sc values (2,1,80);
insert into sc values (3,1,25);
insert into sc values (4,1,45);
insert into sc values (5,1,67);
insert into sc values (1,2,25);
insert into sc values (2,2,77);
insert into sc values (3,2,78);
insert into sc values (4,2,69);
insert into sc values (5,2,24);