SQL基礎練習題

2021-10-04 07:31:58 字數 2931 閱讀 1065

sql 基礎入門50題

1.選擇分數介於85-100,70-85,60-70,0-60分數段之間的人數,課程標號,課程名稱和所佔百分比

select

distinct f.c_name,a.c_id,b.`85

-100

`,b.百分比,c.`70

-85`,c.百分比,

from score a

left

join

(select c_id,

sum(

case

when s_score >

85and s_score <=

100then

1else

0end)as

`85-100`,

round

(100*(

sum(

case

when s_score >

85and s_score <=

100then

1else

0end)/

count(*

)),2

)as 百分比

from score group

by c_id)b on a.c_id=b.c_id

left

join

(select c_id,

sum(

case

when s_score >

70and s_score <=

85then

1else

0end)as

`70-85

`,round

(100*(

sum(

case

when s_score >

70and s_score <=

85then

1else

0end)/

count(*

)),2

)as 百分比

from score group

by c_id)c on a.c_id=c.c_id

left

join course d on d.c_id = a.c_id ;

思路:

分段考慮,肯定是選擇score 表操作,先確定在85-100分數之間的人數以及全分數段的人數,總的人數用count 函式,通過對c_id 分組(group by c_id)

因為要求課程標號和課程名所以肯定需要course 表和score 表的連線

其他分數段的類似上邊。

注意點: distinct 的必要性

--85-100分數段之間的人數,注意的點:重新命名的符號是   **``**

sum(

case

when s_score>

85and s_score<

100then

1else

0end)`

85-100`

-- 該分段總的**

select c_id,

sum(

case

when s_score>

85and s_score<

100then

1else

0end)as

`85-100`,

round

(100*(

sum(

case

when s_score>

85and s_score<

100then

1else

0end))

/count(*

),2)

as 百分比 from score group

by c_id

– 2查詢所有課程的成績第2名到第3名的學生資訊及該課程成績

注意點:按照課程號的不同分成三個部分,但是寫**時代表排名的引數需要更改(@i:=@i+1,@k:=@k+1),不然只能執行第一段**

第乙個select 選擇的score表已經可以顯示課程成績,所以再關聯乙個student表展示學生資訊即可

select  b.s_name, s.s_score,s.c_id from student b ,

(select c_id , s_score, s_id,

@i:=@i+

1as rank from score ,

(select

@i:=

0)p where c_id=

'01'

)swhere b.s_id =s.s_id and s.rank between

2and

3union

select b.s_name, s.s_score,s.c_id from student b ,

(select c_id , s_score, s_id,

@j:=@j+

1as rank from score ,

(select

@j:=

0)p where c_id=

'02'

)swhere b.s_id =s.s_id and s.rank between

2and

3union

select b.s_name, s.s_score,s.c_id from student b ,

(select c_id , s_score, s_id,

@k:=@k+

1as rank from score ,

(select

@k:=

0)p where c_id=

'03'

)swhere b.s_id =s.s_id and s.rank between

2and

3

練習題 基礎練習

第一題 需求 1 計算 5 個月的生活大概開銷 spending 比如 rent 房租 800.00 mealcost 吃飯 900.00 clothingcosts 買衣服 300.00 othercosts 其他費用 300.00 public class dome1 第二題 需求 2 計算 1...

SQL趣味練習題

第一中情況 create table renwu name varchar 20 not null,fahter varchar 20 insert into renwu values 小甲 大甲 insert into renwu values 大甲 老甲 insert into renwu na...

前端基礎練習題

1.js裡面操作屬性的方式有哪些?分別有什麼特點?可以操作js中承認的屬性。不能獲取行間的自定義屬性。可以新增屬性,但是行間看不到。可以操作變數。不能獲取行間自定義屬性。可以新增屬性,但是行間看不到。getattrbute setattrbute removeattrbute可以獲取 設定 移除行間...