有時候數據庫存儲的是一行行的數據,而顯示的時候咱們須要把他轉化爲一列數據,sql
比較常見的場景是,學生的考試成績,員工的工資明細數據庫
這些都會存在一個表中,有不少行數據,可是最終展現的時候咱們須要合併爲一行數據ci
下面以學生成績爲例數學
Name Subject Result
張三 語文 74
張三 數學 83
張三 物理 93
李四 語文 74
李四 數學 84
李四 物理 94table
試題一 : 經過查詢指令輸出如下數據
姓名 語文 數學 物理 平均分 總分
李四 74 84 94 84.00 252
張三 74 83 93 83.33 250ast
-----------------------------------------------------------------------------------------------------------------test
建立表:select
create table test(
username varchar(12),
kemu varchar(12),
fenshu number(4)
);sql語句
向表中製造數據:im
select a.*,rowid from test a ;
查詢的sql語句以下:
使用case when 語句對每門課進行分類,用人員來分組獲得這我的的全部門科,同時能夠求出總分和平均分
select username,
max(case kemu when '語文' then fenshu else 0 end) 語文,
max(case kemu when '數學' then fenshu else 0 end) 數學,
max(case kemu when '英語' then fenshu else 0 end) 英語,
sum(fenshu) 總分,
cast(avg(fenshu*1.0) as decimal(18,2))平均分
from test
group by username ;