SQL實現(xiàn)Excel的10個常用功能的示例詳解
SQL,數(shù)據(jù)分析崗的必備技能,你可以不懂Python,R,不懂可視化,不懂機器學(xué)習(xí)。但SQL,你必須懂。要不然領(lǐng)導(dǎo)讓你跑個數(shù)據(jù)來匯......,哦不,你不懂SQL都無法入職數(shù)據(jù)分析崗,更別說領(lǐng)導(dǎo)了。
SQL難嗎?說實話,要寫好,很難很難。但要通過SQL筆試這關(guān),并不難。相信大伙都使用過Excel,用SQL實現(xiàn)excel 常用操作去學(xué),感覺會比較具體。我自身也剛?cè)霐?shù)據(jù)崗不久,本文也是為自己鞏固一下SQL。
數(shù)據(jù)是網(wǎng)上找到的銷售數(shù)據(jù),命名為sale,長這樣:
01. 關(guān)聯(lián)公式:Vlookup
vlookup是excel幾乎最常用的公式,一般用于兩個表的關(guān)聯(lián)查詢等。所以我先創(chuàng)建一個新表:復(fù)制sale表并篩選出地區(qū)僅為廣州的,命名為sale_guang。
create?table?sale_guang SELECT?*?from?sale?where?city="廣州";
需求:根據(jù)訂單明細號關(guān)聯(lián)兩表,并且sale_guang只有訂單明細號與利潤兩列
SELECT?*?from?sale?a inner?JOIN (SELECT?ordernum,profit?from?sale_guang)?b on?a.ordernum=b.ordernum
02. 對比兩列差異
需求:對比sale的訂單明細號與sale_guang訂單明細號的差異;
SELECT?*?from?sale?a WHERE?a.ordernum?not?in? (SELECT?b.ordernum?from?sale_guang?b);
03. 去除重復(fù)值
需求:去除業(yè)務(wù)員編碼的重復(fù)值
SELECT?*?FROM?sale where?salesnum?not?in? (SELECT?salesnum?from?sale GROUP?BY?salesman HAVING?COUNT(salesnum)>1)
04. 缺失值處理
需求:用0填充缺失值或則刪除有地區(qū)名稱缺失值的行。
--用0填充: update?sale?set?city?=?0?where?city?=?NULL --刪除有缺失值的行: delete?from?sale?where?city?=?NULL;
05. 多條件篩選
需求:想知道業(yè)務(wù)員張愛,在北京區(qū)域賣的商品訂單金額大于等于6000的信息。
SELECT?*?from?sale where?salesman?=?"張愛"? and?city?=?"北京" and?orderaccount?>=6000;
06. 模糊篩選數(shù)據(jù)
需求:篩選存貨名稱含有"三星"或則含有"索尼"的信息。
SELECT?*?from?sale where?inventoryname?like?"%三星%"? or?存貨名稱?like?"%索尼%";
07. 分類匯總
需求:北京區(qū)域各業(yè)務(wù)員的利潤總額。
SELECT?city,sum(`profit`) from?sale WHERE?city?=?"北京" GROUP?BY?`city`;
08. 條件計算
需求:存貨名稱含“三星字眼”并且稅費高于1000的訂單有幾個?這些訂單的利潤總和和平均利潤是多少?
--有多少個? SELECT?COUNT(*)?from?sale where?inventoryname?like?"%三星%" and?`tax`?>?1000?; --這些訂單的利潤總和和平均利潤是多少? SELECT?`ordernum`,SUM(profit),AVG(`profit`) from?sale where?inventoryname?like?"%三星%" and?`tax`?>?1000? GROUP?BY?`ordernum`;
09. 刪除數(shù)據(jù)間的空格
需求:刪除存貨名稱兩邊的空格。
SELECT?trim(inventoryname)?from?sale;
10. 合并與排序列
需求:計算每個訂單號的成本并從高到低排序(成本 = 不含稅金額 - 利潤)
SELECT?city,ordernum, (Nontaxamount?-?profit)?as?cost? from?sale order?by?cost?DESC;
總結(jié):結(jié)構(gòu)化查詢語言(Structured Query Language)簡稱SQL,果然和它名字一樣,查詢起來得心應(yīng)手,但做想做數(shù)據(jù)處理方面,能明細感受到比Python和excel吃力(也可能是我還沒學(xué)好orz)。
SQL筆試題原題
貼一些我在面試時遇到過的SQL筆試題吧:
某數(shù)據(jù)服務(wù)公司
Student表
Score表
(1)查詢Student表中的所有記錄的Sname、Ssex和Class列。
select?sname,ssex,class?from?student;
(2)查詢Score表中成績在60到80之間的所有記錄。
select?*?from?score?between?60?and?80;
(3)查詢95033班和95031班的平均分。
select?class,avg(degree)?from?Score?a join?student?b on?a.sno?=?b.sno GROUP?BY?CLASS;
總之是比較簡單的SQL筆試題了,當時很快就寫完了。實際上這不是原題,不過我有印象就是考察這幾個知識點,并且蠻簡單的。
某手游公司的SQL筆試題(原題)
(1)建立表Student的語句寫下來,表Student是由學(xué)號Sno,姓名Sname,性別Ssex,年齡Sage,所在系Sdept五個屬性組成,其中學(xué)號屬性不能為空,并且其值是唯一的。
create?table?Student_new (sno?varchar(20)?PRIMARY?KEY, sname?varchar(10),ssex?char(2), sage?int,sdept?varchar(25));
(2)在student 表中查詢Sdept是“計算機”的學(xué)生所有信息并按SNO列排序。
select?*?from?student where?sdept?=?"計算機"? order?by?sno?;
(3)在以上三個表中查詢Ccredit為5并且Grade大于60的學(xué)生的學(xué)號、姓名和性別。
select?a.sno,a.sname,a.ssex?from?student?a join?(Course?b?,SC?c) on?a.sno=c.sno?and?b.cno?=c.cno? where?Ccredit?=?5?and?Grade?>?60;
某互聯(lián)網(wǎng)金融公司SQL筆試題(原題)
(1)表A和表B的交集:
SELECT?a.cus_id?from?`表a`?as?a INNER?JOIN?`表b`?as?b on?a.cus_id=b.cus_id;
(2)表A和表B的并集:
SELECT?*?from?`表a` UNION SELECT?*?from?`表b`;
(3)表A和表B的對稱差:
SELECT?*?from?`表a`? where?cus_id?not?in?(SELECT?*?from?`表b`) UNION SELECT?*?from?`表b`? where?cus_id?not?in?(SELECT?*?from?`表a`);
(4)表A中存在但表B中不存在:
SELECT?*?from?`表a` WHERE?cus_id?not?in?(SELECT?cus_id?from?`表b`);
到此這篇關(guān)于SQL實現(xiàn)Excel的10個常用功能的示例詳解的文章就介紹到這了,更多相關(guān)SQL Excel常用功能內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL運行報錯:“Expression?#1?of?SELECT?list?is?not?in?GR
這篇文章主要給大家介紹了關(guān)于MySQL運行報錯:“Expression?#1?of?SELECT?list?is?not?in?GROUP?BY?clause?and?contains?nonaggre”的解決方法,文中將解決方法介紹的非常詳細,需要的朋友可以參考下2022-06-06replace MYSQL字符替換函數(shù)sql語句分享(正則判斷)
最近更新網(wǎng)站發(fā)現(xiàn)一些字段的值不是預(yù)期的效果,需要替換下值,通過下面的sql語句,直接執(zhí)行就可以了2012-06-06MySQL中Multiple primary key defined報錯的解決辦法
這篇文章主要介紹了MySQL中Multiple primary key defined報錯的解決辦法以及相關(guān)實例內(nèi)容,有興趣的朋友們學(xué)習(xí)下。2019-08-08