一释涛、where過(guò)濾條件不能使用聚集函數(shù)
1卵渴、需求:顯示sc 表中成績(jī)大于平均成績(jī)的記錄
2、錯(cuò)誤寫法:select * FROM sc WHERE score>avg(score),這種寫法是錯(cuò)的
3窥妇、正確寫法:select * from sc where score>(select avg(score) from sc )就谜,需要多一個(gè)子查詢怪蔑,或許有更方便的方法,可能我沒(méi)有想到(菜鳥(niǎo)...)
二丧荐、group by高級(jí)用法
需求:求sc表中缆瓣,選修3門課的學(xué)生所占比例
可能我們一開(kāi)始,會(huì)直接通過(guò)group by sid having count(sid)=3去篩選選修3門課的學(xué)生虹统,接下來(lái)下一步再去統(tǒng)計(jì)sc表的sid總數(shù)弓坞,那樣寫出來(lái)的語(yǔ)句可能就是:
SELECT t1.total,count(t2.sid) as 3_total, count(t2.sid)/t1.total from
(SELECT COUNT(DISTINCT sid) as total from sc) as t1,
(select sid from sc GROUP BY sid having COUNT(sid)=3) as t2
但是更好的語(yǔ)句:
select count(*) ,
count(if(t1.total=3,1,null)),
count(if(t1.total=3,1,null))/count(*)
from (SELECT? sid,count(sid)? as total FROM sc GROUP BY sid)t1
三、Mysql的執(zhí)行順序
開(kāi)始->FROM子句->WHERE子句->GROUP BY子句->HAVING子句->ORDER BY子句->SELECT子句->LIMIT子句->最終結(jié)果?
努力努力再努力车荔,認(rèn)真做練習(xí)渡冻,不斷總結(jié)不斷深化,才能真正掌握忧便!
第一次寫簡(jiǎn)書族吻,排版美觀還不會(huì)優(yōu)化,見(jiàn)諒見(jiàn)諒~~