題目: 如下一張學生成績表(tb_score)
要求,寫出合理的sql語句,得到下面的結果```
t_name t_course t_score
小明 語文 90
小明 數學 87
小明 英語 85
小紅 語文 92
小紅 數學 89
小紅 英語 95
```
解答: 測試環境 postgres (摯愛)```
姓名 語文 數學 英語
小明 90 87 85
小紅 92 89 95
```
1) 建表
2) 插入資料set search_path to
public;
-- scripts
create
table
public.tb_score
(id serial,
t_name character
varying(24) not
null,
t_course character
varying(64) not
null,
t_score smallint
notnull
default
0, constraint tb_score_id primary
key (id),
constraint tb_score_unq_name unique (t_name, t_course)
)with (
oids=false
);
3) 查詢insert
into
public.tb_score (t_name, t_course, t_score)
values ('小明','語文',90), ('小明','數學',87),
('小明','英語',85), ('小紅','語文',92),
('小紅','數學',89), ('小紅','英語',95);
select t_name as
"姓名",
sum(case t_course when
'數學'
then t_score else
0end) as
"數學",
sum(case t_course when
'英語'
then t_score else
0end) as 英語,
sum(case t_course when
'語文'
then t_score else
0end) as 語文
from
public.tb_score
group
by t_name;
select t_name as
"姓名",
sum(case t_course when
'數學'
then t_score else
null
end) 數學,
sum(case t_course when
'英語'
then t_score else
null
end) 英語,
sum(case t_course when
'語文'
then t_score else
null
end) 語文
from
public.tb_score
group
by t_name;
python 列轉行 SQL 行轉列,列轉行
sql 行轉列,列轉行 行列轉換在做報表分析時還是經常會遇到的,今天就說一下如何實現行列轉換吧。行列轉換就是如下圖所示兩種展示形式的互相轉換 行轉列假如我們有下表 select from student pivot sum score for subject in 語文,數學,英語 通過上面 sql...
SQL查詢行轉列和列轉行
主要思路是分組後使用case進行條件判斷處理 示例1select team,示例2create table wyc test id int 32 not null auto increment name varchar 80 default null date date default null s...
sql中 列轉行
列轉行,主要是通過union all max來實現。假如有下面這麼乙個表 createtableprogrectdetail progrectname nvarchar 20 工程名稱 overseasupplyint,海外 商供給數量 nativesupply int,國內 商供給數量 south...