表A,有姓名,分數,班級三個字段。我想查詢每個班級分數第一的人叫什麼名字,sql語句怎麼寫?

時間 2021-05-31 18:32:34

1樓:「已登出」

換個思路,分組未必是用group by實現的。兩種最經典的求分組裡面a列值最大的b列值(或者全列),not exists,開子視窗

select * from student t1where not exists(

select *

from t1

where t1.classroom=t2.classroomand t2.

score>t1.score)隱患是沒有處理同樣分數最高的的人,但是從語法上來說同樣最高分符合最高分的定義。

with aa as

( select *,

rank() over(group by classroom order by score desc) as rk

from student)

select *

from aa

where rk=1

以上兩個語句符合sql92,可以在大多數SLQ資料庫使用

2樓:拯救夢想

這個問題有一種情況需要考慮到,就是如果乙個班級裡出現多名同學的分數並列第一,那麼他們的名字都要查出來。

這個查詢通過乙個自然連線就可以做到,具體的 SQL 如下:

SELECT

NAME

FROM

students

aINNER

JOIN

(SELECT

classroom

,MAX

(score)AS

score

FROM

students

GROUP

BYclassroom)b

ONb.classroom=a

.classroom

ANDb

.score=a

.score

衍生表 b 是通過 students 表分組聚合出來的結果,它的資料是所有的班級及該班級裡學生的最高分數。

視窗函式是在 MySQL 8.0 及以後的版本才出現,如果使用視窗函式,可以這麼寫:

SELECT

NAME

FROM

(SELECT

NAME

,rank

()over

(PARTITION

BYclassroom

ORDER

BYscore

DESC)AS

rkFROM

students)t

WHERErk=1

3樓:Discuz外掛程式開發者

如果是在程式設計裡面,可以分二條SQL語句,這樣思路清晰,可讀性強。

SELECT distinct classroom FROM students

上面的SQL可以查詢到所有的班級

然後 SELECT MAX(score) FROM students WHERE classroom='班級'

這樣分二條來寫。

4樓:

SELECT

name

,classroom

,MAX

(score

)FROM

`student

`GROUP

BYclassroom

5樓:arachis

依然是視窗函式,

row_number() over(partition by 班級,order by 分數 desc) as rank

適用topk問題,只查一次原表

6樓:大梨子

SELECT

a.score,

a.`name`

FROM

students AS a

JOIN (

SELECT

max( score ) as mscoreFROM

students as b

GROUP BY

classroom

) AS b ON a.score = b.mscore;

SELECT

score,

`name`

FROM

students

WHERE

score IN (

SELECT

max( score )

FROM

students

GROUP BY

classroom

這兩個好像都可以。

2020 11 08 Mysql中,三個欄位A B C的聯合索引,查詢條件是B A C,會用到索引嗎?

是不是用索引,和查詢條件的順序無關 優化器會自動調整條件的順序 但和這些欄位的查詢手段有關 建立了abc的聯合索引,相當於建立了 a的單列索引,ab的聯合索引,以及abc的聯合索引 一般根據最左匹配的原則,但在遇到範圍查詢後,匹配終止,也就是說,當條件為 a like str a like str ...

回答「哦」「噢」「喔」三個字有什麼差別?

你別走i 沒啥區別 加上表情就有區別了 乙個字理解起來可能有多種意思,但是你如果在乙個字後面再加上乙個特定的表情,那他的意思基本就明確了 畢竟郝霸霸 哦,顯得冷漠,距離感 哦哦,會稍微好一點 噢,疑問得到解決,恍然大悟的感覺 喔,表示明白,顯得可愛,乖 個人感覺,不喜勿噴 Moon 我感覺哦和哦哦和...

有哪些積極向上的三個字詞語

神話情話 夢未來 無極限 掌舵者 騰飛翔 實打實 要堅強 不拋棄 不放棄 不服輸 永奮鬥 誓不休 我要強,你好棒 不旋踵 詩言志 試金石 相信我,我可以,我能行,不要怕,敢拼搏,永奮鬥 你勇敢。哈哈哈 Anduin 要自信。不放棄。學海無涯。我不會逃避。依賴就是軟弱。你已不在迷茫。沒人能質疑我們的決...