SQL實(shí)現(xiàn)Excel的10個(gè)常用功能的示例詳解
SQL,數(shù)據(jù)分析崗的必備技能,你可以不懂Python,R,不懂可視化,不懂機(jī)器學(xué)習(xí)。但SQL,你必須懂。要不然領(lǐng)導(dǎo)讓你跑個(gè)數(shù)據(jù)來匯......,哦不,你不懂SQL都無法入職數(shù)據(jù)分析崗,更別說領(lǐng)導(dǎo)了。
SQL難嗎?說實(shí)話,要寫好,很難很難。但要通過SQL筆試這關(guān),并不難。相信大伙都使用過Excel,用SQL實(shí)現(xiàn)excel 常用操作去學(xué),感覺會(huì)比較具體。我自身也剛?cè)霐?shù)據(jù)崗不久,本文也是為自己鞏固一下SQL。
數(shù)據(jù)是網(wǎng)上找到的銷售數(shù)據(jù),命名為sale,長(zhǎng)這樣:
01. 關(guān)聯(lián)公式:Vlookup
vlookup是excel幾乎最常用的公式,一般用于兩個(gè)表的關(guān)聯(lián)查詢等。所以我先創(chuàng)建一個(gè)新表:復(fù)制sale表并篩選出地區(qū)僅為廣州的,命名為sale_guang。
create?table?sale_guang SELECT?*?from?sale?where?city="廣州";
需求:根據(jù)訂單明細(xì)號(hào)關(guān)聯(lián)兩表,并且sale_guang只有訂單明細(xì)號(hào)與利潤(rùn)兩列
SELECT?*?from?sale?a inner?JOIN (SELECT?ordernum,profit?from?sale_guang)?b on?a.ordernum=b.ordernum
02. 對(duì)比兩列差異
需求:對(duì)比sale的訂單明細(xì)號(hào)與sale_guang訂單明細(xì)號(hào)的差異;
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ù)員的利潤(rùn)總額。
SELECT?city,sum(`profit`) from?sale WHERE?city?=?"北京" GROUP?BY?`city`;
08. 條件計(jì)算
需求:存貨名稱含“三星字眼”并且稅費(fèi)高于1000的訂單有幾個(gè)?這些訂單的利潤(rùn)總和和平均利潤(rùn)是多少?
--有多少個(gè)? SELECT?COUNT(*)?from?sale where?inventoryname?like?"%三星%" and?`tax`?>?1000?; --這些訂單的利潤(rùn)總和和平均利潤(rùn)是多少? 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. 合并與排序列
需求:計(jì)算每個(gè)訂單號(hào)的成本并從高到低排序(成本 = 不含稅金額 - 利潤(rùn))
SELECT?city,ordernum, (Nontaxamount?-?profit)?as?cost? from?sale order?by?cost?DESC;
總結(jié):結(jié)構(gòu)化查詢語言(Structured Query Language)簡(jiǎn)稱SQL,果然和它名字一樣,查詢起來得心應(yīng)手,但做想做數(shù)據(jù)處理方面,能明細(xì)感受到比Python和excel吃力(也可能是我還沒學(xué)好orz)。
SQL筆試題原題
貼一些我在面試時(shí)遇到過的SQL筆試題吧:
某數(shù)據(jù)服務(wù)公司
Student表
Score表
(1)查詢Student表中的所有記錄的Sname、Ssex和Class列。
select?sname,ssex,class?from?student;
(2)查詢Score表中成績(jī)?cè)?0到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;
總之是比較簡(jiǎn)單的SQL筆試題了,當(dāng)時(shí)很快就寫完了。實(shí)際上這不是原題,不過我有印象就是考察這幾個(gè)知識(shí)點(diǎn),并且蠻簡(jiǎn)單的。
某手游公司的SQL筆試題(原題)
(1)建立表Student的語句寫下來,表Student是由學(xué)號(hào)Sno,姓名Sname,性別Ssex,年齡Sage,所在系Sdept五個(gè)屬性組成,其中學(xué)號(hào)屬性不能為空,并且其值是唯一的。
create?table?Student_new (sno?varchar(20)?PRIMARY?KEY, sname?varchar(10),ssex?char(2), sage?int,sdept?varchar(25));
(2)在student 表中查詢Sdept是“計(jì)算機(jī)”的學(xué)生所有信息并按SNO列排序。
select?*?from?student where?sdept?=?"計(jì)算機(jī)"? order?by?sno?;
(3)在以上三個(gè)表中查詢Ccredit為5并且Grade大于60的學(xué)生的學(xué)號(hào)、姓名和性別。
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的對(duì)稱差:
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實(shí)現(xiàn)Excel的10個(gè)常用功能的示例詳解的文章就介紹到這了,更多相關(guān)SQL Excel常用功能內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解MySQL安裝及MySQL8.0新密碼認(rèn)證方式
這篇文章主要介紹了詳解MySQL安裝及MySQL8.0新密碼認(rèn)證方式,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-09-09MySQL運(yùn)行報(bào)錯(cuò):“Expression?#1?of?SELECT?list?is?not?in?GR
這篇文章主要給大家介紹了關(guān)于MySQL運(yùn)行報(bào)錯(cuò):“Expression?#1?of?SELECT?list?is?not?in?GROUP?BY?clause?and?contains?nonaggre”的解決方法,文中將解決方法介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06帶你學(xué)習(xí)MySQL執(zhí)行計(jì)劃
前面文章,我們學(xué)習(xí)了 MySQL 慢日志相關(guān)內(nèi)容,當(dāng)我們篩選得到具體的慢 SQL 后,就要想辦法去優(yōu)化啦。優(yōu)化 SQL 的第一步應(yīng)該是讀懂 SQL 的執(zhí)行計(jì)劃。本篇文章,我們一起來學(xué)習(xí)下 MySQL explain 執(zhí)行計(jì)劃相關(guān)知識(shí)。2021-05-05replace MYSQL字符替換函數(shù)sql語句分享(正則判斷)
最近更新網(wǎng)站發(fā)現(xiàn)一些字段的值不是預(yù)期的效果,需要替換下值,通過下面的sql語句,直接執(zhí)行就可以了2012-06-06解析MySQL中存儲(chǔ)時(shí)間日期類型的選擇問題
這篇文章主要介紹了解析MySQL中存儲(chǔ)時(shí)間日期類型的選擇問題,具有一定參考價(jià)值,需要的朋友可以了解。2017-10-10MySQL中Multiple primary key defined報(bào)錯(cuò)的解決辦法
這篇文章主要介紹了MySQL中Multiple primary key defined報(bào)錯(cuò)的解決辦法以及相關(guān)實(shí)例內(nèi)容,有興趣的朋友們學(xué)習(xí)下。2019-08-08mysql數(shù)據(jù)庫(kù)中的索引類型和原理解讀
這篇文章主要介紹了mysql數(shù)據(jù)庫(kù)中的索引類型和原理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02