SQL 行列轉置 常見面試題(一)

2021-10-20 17:40:45 字數 1937 閱讀 3640

常見面試題如下:

先來分析一下:

第一步將course 裡面的課程轉換為列標題,常用 case when 就能解決。

select

`學號`

,max((

case

when

`課程號`

='0001'

then

`成績`

end))as

'語文'

,max((

case

when

`課程號`

='0002'

then

`成績`

end))as

'數學'

,max((

case

when

`課程號`

='0003'

then

`成績`

end))as

'英語'

from stu_sco

group

by`學號`

注意: 此步使用case when 外面沒有使用聚合函式,返回值會出現錯誤

未分組時,結果如下,會發現沒匹配到的地方是空值,如果不聚合,無法取到你需要的數字。不同型別格式進行聚合時,字串、數字優先順序高於空值,使用聚合函式,才能保證取到正確的值。

這裡是group by 之後的,可以看到資料是錯誤的:

第二步,將分數轉換為 優良中差,依舊使用的是case when ,相當於二次巢狀。最後一列沒有對分數進行轉換,可以看一下差別。

select

`學號`

,max((

case

when

`課程號`

='0001'

then

(case

when

`成績`

>

90then

'優'when

`成績`

>

80then

'良'when

`成績`

>

70then

'中'else

'差'end

)end))

as'語文'

,max((

case

when

`課程號`

='0002'

then

(case

when

`成績`

>

90then

'優'when

`成績`

>

80then

'良'when

`成績`

>

70then

'中'else

'差'end

)end))

as'數學'

,max((

case

when

`課程號`

='0003'

then

`成績`

end))as

'英語'

from stu_sco

group

by`學號`

;

SQL常見面試題彙總

sql查詢較慢的原因以及改進方法 重要程度 五顆 1 沒有索引或者沒有用到索引 這是查詢慢最常見的問題,是程式設計的缺陷 create unique clustered nonclustered index index name on with index property n 說明 unique ...

常見面試題一

1.下列程式在32位 linux 或unix 中的結果是什麼?func char str main 答 10 4 9 這個也就是說sizeof 來計算的時候,要在字串後面加乙個 0,而 strlen 不加。其他str 為乙個指標,故 sizeof str 為4 2 在c 的內中定義訪問函式,即是在這...

常見面試題

1.get和post的區別 1 本質區別 get是向伺服器請求資料,post是向伺服器傳送資料。2 伺服器獲取值的方式 get方式提交的資料,伺服器端使用request.querystring獲取變數的值。post方式提交的資料,伺服器端使用request.form獲取資料。3 安全性 get安全效...