① sql語句:查詢各班成績前3的同學姓名
分析如下:
可以用row_number函數來解決。
1、創建測試表,插入數據:
(資料來源:網路:SQL語句)
② 在SQL SERVER中,怎樣查詢每門功課成績最好的前兩名,幫我寫一下,謝謝,請補充:
create table #SC(
S# varchar(10), --學號
C# varchar(10), --課號
score decimal(18,1) --成績
)
insert into #sc values('01' , '01' , 80)
insert into #sc values('01' , '02' , 90)
insert into #sc values('01' , '03' , 99)
insert into #sc values('02' , '01' , 70)
insert into #sc values('02' , '02' , 60)
insert into #sc values('02' , '03' , 80)
insert into #sc values('03' , '01' , 80)
insert into #sc values('03' , '02' , 80)
insert into #sc values('03' , '03' , 80)
insert into #sc values('04' , '01' , 50)
insert into #sc values('04' , '02' , 30)
insert into #sc values('04' , '03' , 20)
insert into #sc values('05' , '01' , 76)
insert into #sc values('05' , '02' , 87)
insert into #sc values('06' , '01' , 31)
insert into #sc values('06' , '03' , 34)
insert into #sc values('07' , '02' , 89)
insert into #sc values('07' , '03' , 98)
create table #temp
(
S# varchar(10), --學號
C# varchar(10), --課號
score decimal(18,1) --成績
)
insert into #temp
select top 2 *from #SC where C#='01' order by score desc
insert into #temp
select top 2 *from #SC where C#='02' order by score desc
insert into #temp
select top 2 *from #SC where C#='03' order by score desc
select *from #temp
drop table #temp
drop table #SC
運行結果
S# C# score
01 01 80.0
03 01 80.0
01 02 90.0
07 02 89.0
01 03 99.0
07 03 98.0
③ SQL 得到 每個組的前兩名 怎麼寫
SELECT * FROM TAB A
WHERE 編號 IN (
SELECT TOP 2 編號
FROM TAB
WHERE 班級=A.班級
ORDER BY 成績 DESC
)
④ mysql查詢每科成績前兩名
首先,select count(1)表示查詢出表中符合條件的行數;
r2.cno=r1.cno and r2.score >= r1.score表示查詢條件;
select count(1) from sc r2 where r2.cno=r1.cno and r2.score >= r1.score總體的意思就是從表r2中查詢出滿足r2.cno=r1.cno and r2.score >= r1.score條件的行數;
結合完整的sql語句來看,這個查詢出的行數要<=2,所以"行數<=2"是作為前一個查詢語句的查詢條件的。
這樣這個語句簡單點理解就是:從r1表查詢sno,cno,score這三列,查詢條件是"行數<=2"。
說的比較復雜,不知道你懂了沒
⑤ sql怎麼輸出查詢結果的前兩個
如果是2個sql語句的話。如果列名都一樣,使用unionall就可以了。例如select*from表1unionallselect*from表2就可以了。
⑥ SQL查詢語句 輸出班級男女生的前兩名
select sno,sex,top (2) with ties scores from student where sex = '男' ORDER BY Scores DESC
Union
select sno,sex,top (2) with ties scores from student where sex = '女' ORDER BY Scores DESC
你要的輸出結果是不可能實現的,至少你給我看的欄位里,沒有任何欄位可以讓兩個表橫向連接,只能縱向連接
⑦ 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的成績按從大到小排序,然後外層再取各自的前兩名