用SQL分析找工作

用SQL分析找工作

來自專欄數據分析

  1. 工具的安裝

電腦系統:mac

mysql服務端:dev.mysql.com/downloads

mysql客戶端:navicat(網上可以找到破解版)

sublime text: 可以打開sql、對excel文件進行轉碼的工具,類似windows中的notepad++

2. 數據準備

數據來源:使用爬蟲工具在前程無憂上爬取了深圳市產品經理招聘信息前10頁數據

數據格式:轉存為csv

3. 通過分析希望得出以下問題的結論

1)如果投遞數據產品經理崗位,我的期待薪資填多少會比較符合行情?

2)投遞什麼樣的公司,面試概率高?

4. 數據導入

1)在mysql中新建資料庫work

select database work;

2)選中表,右鍵導入嚮導,導入csv源數據

【注意】

(1)為了避免源數據字元串過長,需要將數類型改成text,長度不限制,否則很有可能會導入失敗;

(2)若源數據中有中文,在導入時注意編碼要選擇簡體中文,否則導入出來的數據會亂碼。

(3) 源數據保存格式:csv的兼容性好,不建議直接使用xls/xlsx格式進行導入。

work_analysis

5. 數據清洗

1)為了便於搜索,把中文的列名重名為英文

alter table work_analysischange column `職位名稱`job_title text,change column `薪資` salary text,change column `公司名稱`company text,change column `工作地點`address text,change column `發布時間`date text;

2)為了便於排重和建立數據間的映射關係,給表新增列id,並作為主鍵

alter table work_analysisadd column id int auto_increment primary key;

3)選擇子集:選取跟數據產品經理相關的崗位,其餘數據刪除

delete from work_analysiswhere job_title not like %數據%;

4)排重:由於表中沒有唯一標識的數據列(例如崗位編號),因此無法排重。

5)缺失值處理:刪除空值

delete from work_analysiswhere job_title is nullor salary is nullor company is nullor address is nullor date is null;

5)一致化處理和異常值處理

salary中需要將最低薪資、最高薪資截取出來,以數值的形式呈現,並增加平均值的計算

-- 新增列alter table work_analysisadd column low_salary float, add column high_salary float, add column avg_salary float;-- 截取最低薪資update work_analysisset low_salary = substring_index(salary, -,1)*1000where salary like %千%and salary not like %年;update work_analysisset low_salary = substring_index(salary, -,1)*10000where salary like %萬%and salary not like %年;-- 截取最高薪資update work_analysisset high_salary = substring_index(substring_index(salary,-,-1),/,1)*1000where salary like %千%and salary not like %年;update work_analysisset high_salary = substring_index(substring_index(salary,-,-1),/,1)*10000where salary like %萬%and salary not like %年;-- 排除異常值update work_analysisset low_salary = substring_index(salary, -,1)*1000/12where salary like %千%and salary like %年;update work_analysisset low_salary = substring_index(salary, -,1)*10000/12where salary like %萬%and salary like %年;update work_analysisset high_salary = substring_index(substring_index(salary,-,-1),/,1)*1000/12where salary like %千%and salary like %年;update work_analysisset high_salary = substring_index(substring_index(salary,-,-1),/,1)*10000/12where salary like %萬%and salary like %年;-- 取整update work_analysisset low_salary = round(low_salary,0);update work_analysisset high_salary = round(high_salary,0);-- 計算平均值update work_analysisset avg_salary= round((low_salary+high_salary)/2,0);

清洗結果如下:

6. 解題思路

問題1

1) 查找跟「數據產品經理」相關的崗位名稱和對應的平均薪資範圍

select max(avg_salary), min(avg_salary)from work_analysis;

【結論】:深圳市數據產品經理相關崗位平均薪資在4250--40000元之間

2)將數據產品經理的薪資進行分組和計數

select sum(case when avg_salary <= 10000 then 1 else 0 end) as low_salary,sum(case when avg_salary between 10001 and 20000 then 1 else 0 end) as mid_salary,sum(case when avg_salary >= 20001 then 1 else 0 end) as high_salaryfrom work_analysis;

【結論】數據產品經理的薪資都集中在10000-20000之間,屬於中高薪崗位。

因此,對於文章開始拋出的問題1

如果投遞數據產品經理崗位,我的期待薪資填多少會比較符合行情?

可得出如下結論:如果在數據產品崗位有初級經驗(例如1-3年),可將期待薪資填寫在10000-20000元之間,如果經驗豐富(例如3年以上),可將期待薪資往20000以上填,但最高40000封頂,如果超過了這個上限,估計很少公司會給offer。

問題2

查找出薪資範圍在10000-20000之間的招聘數據產品經理的公司以及對應薪資,按發布日期薪資降序排序。

select company, avg_salary, datefrom work_analysiswhere avg_salary between 10001 and 20000order by date DESC, avg_salary DESC;

因此,對於文章開始拋出的問題2

投遞什麼樣的公司,面試概率高?

可得出結論:由於是初級經驗,因此投遞簡歷最好投遞薪資在10000-20000之間的公司,這樣對應的能力比較匹配,面試的概率也會提高。此外,投遞的時候,最好按照順序投遞,因為此結果是按崗位發布時間降序排序的,通常情況下,發布時間離當前越近,表示招人需求越迫切,而發布時間離當前日期比較遠,該企業很可能已經有意向的候選人了,只不過該候選人還未入職。

推薦閱讀:

互聯網會消耗多大能量?
如何評價小米8採用的 1080p AMOLED 屏幕?
MySQL這隻小海豚終於長大到了8.0 !
PDF,Word各種格式轉換工具

TAG:SQL語句 | 科技 | SQL |