Sql Server數據庫表的橫縱向輸出 聚集函數

1) 縱表變橫表

/*創建數據庫表*/
use testbase2
create table Table_A
(
    name varchar(20),
    course varchar(20),
    score int
)
insert into Table_A(name,course,score) values('張三','語文',60)
insert into Table_A(name,course,score) values('張三','數學',70)
insert into Table_A(name,course,score) values('張三','英語',80)
insert into Table_A(name,course,score) values('李四','語文',90)
insert into Table_A(name,course,score) values('李四','數學',100)
/*查詢插入的語句*/
select  * from Table_A

在這裏插入圖片描述

/*橫向輸出這張表*/
SELECT name,
sum (case course when '語文' then score else 0 end) as 語文,
sum (case course when '數學' then score else 0 end) as 數學,
sum (case course when '英語' then score else 0 end) as 英語
FROM  Table_A
GROUP BY name

在這裏插入圖片描述

2)橫表變縱表

/*縱向輸出這張表*/
create table Table_B
(
    name varchar(20),
    chinese int,
    math int,
    english int
)
insert into Table_B(name,chinese,math,english) values('張三',60,70,80)
insert into Table_B(name,chinese,math,english) values('李四',90,100,0)

select * from Table_B

在這裏插入圖片描述

select name,'語文' as 課程,chinese as 成績 from Table_B union all
select name,'數學' as 課程,math as 成績 from Table_B union all
select name,'英語' as 課程,english as 成績 from Table_B
order by name,課程 desc

在這裏插入圖片描述
/查詢學生總人數/

select COUNT(name) 總人數
from Table_B

在這裏插入圖片描述
/查詢張三的平均成績/

select avg(score) 平均成績
from Table_A
where name like '張三';

在這裏插入圖片描述
/查詢李四的最高成績/

select MAX(score) 最高成績
from Table_A
where name like '李四';

在這裏插入圖片描述

/*查詢張三的總成績*/
select SUM(score) 總成績
from Table_A
where name like '張三';

在這裏插入圖片描述

/*查詢姓名,選課數,總成績*/
select name 姓名,count(course) 選課數,SUM(score) 總成績
from Table_A
group by name

在這裏插入圖片描述

發佈了68 篇原創文章 · 獲贊 28 · 訪問量 5842
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章