mysql 慢慢來

記錄一下昨天的面試題,源於數據庫知識一向薄弱,所以從建庫建表開始吧。

create database mytest;
use mytest;

create table marker(
  id int primary key auto_increment,
  stuName varchar(20),
  classType varchar(20),
  fenshu varchar(20)
)engine = InnoDB default charset=utf8 collate = utf8_unicode_ci;

insert into marker(stuName,classType,fenshu) values
('a','語文','79'),
('b','語文','86'),
('c','語文','68'),
('a','數學','86'),
('b','數學','80'),
('c','數學','92'),
('a','英語','76'),
('b','英語','84'),
('c','英語','73');
至此,marker表建立好了,數據也插入進去了。

恩,再修改一下名字吧

UPDATE marker set stuName = '張三' WHERE stuName = 'a';
UPDATE marker set stuName = '李四' WHERE stuName = 'b';
UPDATE marker set stuName = '王五' WHERE stuName = 'c';
現在數據庫中的數據是這個樣子的:


好了,有道題要求用一個查詢語句將原表查詢結果修改爲這樣:


其實就是行專列,以前根本不知道還能這樣玩哭

select stuName name,
sum(case classType when '語文' then fenshu else 0 end) chinese,
sum(case classType when '數學' then fenshu else 0 end) math,
sum(case classType when '英語' then fenshu else 0 end) english
from marker
group by stuName;
恩,OK了。

在這裏,再做一下額外的記錄:sum函數和max函數都能實現這個效果,至於有什麼區別,暫時不清楚。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章