99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
2019-01-25 閱讀量: 2864
SQL中case when 搭配 max()該如何理解

問題描述:

表信息為:

create table SC(SID tinyint,CID tinyint,score tinyint)charset utf8;

set names gbk;

insert into SC

values(01,01,80),(01,02,90),(01,03,99),(02,01,70),(02,02,60),

(02,03,80),(03,03,80),(04,01,50),(04,02,30),(04,03,20),

(05,01,76),(05,02,87),(06,03,34),(07,02,89),(07,03,98),

(03,01,80),(03,02,80),(06,01,31);

需要查找:按平均成績從高到低顯示所有學(xué)生的所有課程的成績以及平均成績

sql語句

select Sid,max(case Cid when '1' thenscore else 0 end)'01',??

max(case Cid when '2' then score else 0end)'02',??

max(case Cid when '3' then score else 0end)'03',AVG(score)平均分 from SC??

groupby Sid order by平均分desc??;

不加max()函數(shù)的sql語句:

select Sid,(case Cid when '1' then scoreelse 0 end)'01',??

(case Cid when '2' then score else 0end)'02',??

(case Cid when '3' then score else 0end)'03',AVG(score)平均分 from SC??

group by Sid order by 平均分 desc??;

以上兩個SQL語句有什么區(qū)別嗎?

解決方法:

max()函數(shù)檢索的是每個學(xué)生每個科目的分?jǐn)?shù),不加max()函數(shù)檢索的是每個學(xué)生按原數(shù)據(jù)表中的順序的第一個科目的分?jǐn)?shù)

case when實現(xiàn)行列轉(zhuǎn)換時會出現(xiàn)多條記錄,如果不用聚合函數(shù)直接進(jìn)行g(shù)roup by分組,那么檢索的是基表里分組字段的第一條記錄,

如果使用max()函數(shù)之后再進(jìn)行g(shù)roup by分組,那么就會檢索每個字段的最大值然后再分組

0.0000
4
關(guān)注作者
收藏
評論(0)

發(fā)表評論

暫無數(shù)據(jù)
推薦帖子