自連接用法
- 排列組合(重復排列/不重復排列/組合)
- 刪除重復項
- 查找局部不一致的列
- 排序
用法1:可重排列
應用場景:把所有可能出現(xiàn)的組合全部羅列一遍
案例:求出products中name列的所有排列結果

原始表products

使用cross join得到所有排列結果
用法2:case when 行轉列
應用場景:需要把原數(shù)據(jù)的行變成列,列變成行
案例:把所有男性/女性分別匯總成一列

原始表poptbl_sex

原有的男性/女性分別匯總為一列
用法3:update 同步更新
應用場景:由于update會在更新結果上繼續(xù)更新,因此單獨更新會出現(xiàn)錯誤,此時需要用到case when 同時更新
案例:薪資>300000 薪資變?yōu)?成,薪資大于250000,小于280000薪資變?yōu)?.2倍數(shù)

原始表salary

case when 劃分情況實現(xiàn)了同時更新
用法4:case when +子查詢
應用場景:需要查詢的信息同時與兩個表有關系
案例:查詢各課程及月份,有該課程打圈,沒有打叉

原始表coursemaster

原始表opencourses

case when作為判斷,當滿足相應id在某范圍內則打勾,否則打叉
用法5:case when 聚合函數(shù)
應用場景:需要使用多種聚合函數(shù),當滿足相應情況聚合相應結果
案例:求各學生主要社團id,如果只有一個社團則該是該社團id,若多個社團,按照flag判斷

原始表studentclub

滿足count(*)=1則為club_id,否則找flag為Y的作為社團id