前幾天遇到了這個問題,覺得無從下手。空了下來,仔細研究了下:
先向資料庫中寫點資料:
code
create
table
tb1 (id
intidentity(1
,1),name
varchar(10
),score
int)
insert
tb1
select'小明
',89insert
tb1
select'小明
',99insert
tb1
select'小羅
',85insert
tb1
select'小李
',56insert
tb1
select'小李
',77insert
tb1
select'小李
',66insert
tb1
select'小陳
',74insert
tb1
select'小陳
',68insert
tb1
select'小陳
',90insert
tb1
select'小陳
',59然後開始寫語句。由於不知道怎麼入手,所以我先把問題簡化。求成績最好的那項:
code
1selecta.*
from
tb a,(
select
name,
max(score)
asscore
from
tb group
byname) b
2where
a.score
=b.score
3進而開始思考,求最好得前2項。於是我寫出了這樣的**:
code
selecta.*
from
tb a,(
select
name,
top2
(score)
asscore
from
tb group
byname) b
where
a.score
=b.score
以上**卻通不過編譯。咋一看,兩個功能相識,結構相近得**,為什麼這個就不能通過編譯呢?仔細看了看,才發現,top並不支援這種用法。
於是,我修改**:
code
select
*from
tb1 a
where
score in(
select
top2
score
from
tb1
where
name
=a.name
order
byscore
desc
)這樣,大致結果是出來了,再排下結果的順序:
code
select
*from
tb1 a
where
score in(
select
top2
score
from
tb1
where
name
=a.name
order
byscore
desc
) order
byname,score
desc
求平均成績
problem description 假設乙個班有n n 50 個學生,每人考m m 5 門課,求每個學生的平均成績和每門課的平均成績,並輸出各科成績均大於等於平均成績的學生數量。input 輸入資料有多個測試例項,每個測試例項的第一行包括兩個整數n和m,分別表示學生數和課程數。然後是n行資料,每...
F 求平均成績
f 求平均成績 time limit 1000ms memory limit 32768kb 64bit io format i64d i64u submit status practice hdu 2023 description 假設乙個班有n n 50 個學生,每人考m m 5 門課,求每個學...
NYOJ 求平均成績
求平均成績 假設乙個班有n n 50 個學生,每人考m m 5 門課,求每個學生的平均成績和每門課的平均成績,並輸出各科成績均大於等於平均成績的學生數量。input 輸入資料有多個測試例項,每個測試例項的第一行包括兩個整數n和m,分別表示學生數和課程數。然後是n行資料,每行包括m個整數 即 考試分數...