數據分析之SQL:常用模型
以下介紹常用的SQL寫法:
case when的用法---不管偏不偏,你可能真沒見過這種寫法
內連接VS左連接---80%的業務代碼都與之相關
distinct的用法--你可能真的錯怪distinct了
order by的注意事項---order by一般放在主查詢後,子查詢無效!
group by---新手小白,總是group by時報錯!
having--having有時真的很牛逼
topN問題---分組取最大,分組取前幾
標準SQL與基於hive的SQL---最常見的區別
不得不知的聚合函數---資料庫中的聚合函數真的比excel快很多!
SQL優化--路漫漫其修遠兮……
做需求寫SQL需要注意的問題---一家之言
case when
1、不同的崗位調不同等級的薪水;
select last_name,job_id,salary,case job_id
when IT_PROG then 1.1*salary
when ST_CLERK then 1.15*salary
when SA_REP then 1.2*salary
else salary
end
「zhangngongzi」
from employees;
2、行列轉換之case when
select deptno,sum(clerk) as clerk ,sum(salesman) as salesman ,sum(manager) as manager,sum(analyst) as analyst ,sum(president) as president
from
(select deptno,case job when CLERK THEN SAL end as clerk, case job WHEN SALESMAN THEN SAL end as salesman, case job WHEN MANAGER THEN SAL end as manager,
case job WHEN ANALYST THEN SAL end as analyst,
case job WHEN PRESIDENT THEN SAL END as president FROM EMP ) group by deptno;
順便提一下SQL語句的執行順序:from--where---group by--having--select --distinct ---order by --limit
加上多表連接後,執行順序:先執行子查詢,再執行主查詢;先對兩個表執行笛卡爾乘積--join--where---group by--having--select --distinct ---order by --limit
帶Left Join的SQL語句的執行順序
最終實現的效果: