當前位置:首頁 » 編程語言 » 查詢前兩名sql
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

查詢前兩名sql

發布時間: 2023-02-01 06:11:37

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的成績按從大到小排序,然後外層再取各自的前兩名