1.Group by 对数据进行分组,类似于Excel里的数据透视表
1.1
SELECT city,count(positionId),count(1),count(*) FROM data.dataanalyst
group by city
output:
上海 | 979 | 979 | 979 |
北京 | 2347 | 2347 | 2347 |
南京 | 83 | 83 | 83 |
厦门 | 30 | 30 | 30 |
天津 | 20 | 20 | 20 |
广州 | 335 | 335 | 335 |
成都 | 135 | 135 | 135 |
杭州 | 406 | 406 | 406 |
武汉 | 69 | 69 | 69 |
深圳 | 527 | 527 | 527 |
苏州 | 37 | 37 | 37 |
西安 | 38 | 38 | 38 |
长沙 | 25 | 25 | 25 |
1.2 distinct 唯一公司数目
SELECT city,count(positionId),count(distinct companyId) FROM data.dataanalyst
group by city
out:
上海 | 979 | 505 |
北京 | 2347 | 922 |
南京 | 83 | 46 |
厦门 | 30 | 25 |
天津 | 20 | 19 |
广州 | 335 | 209 |
成都 | 135 | 99 |
杭州 | 406 | 196 |
武汉 | 69 | 50 |
深圳 | 527 | 310 |
苏州 | 37 | 22 |
西安 | 38 | 29 |
长沙 | 25 | 19 |
1.3
SELECT city,education,count(1) FROM data.dataanalyst
group by city,education
out:
上海 | 大专 | 110 |
上海 | 本科 | 723 |
上海 | 硕士 | 75 |
上海 | 不限 | 68 |
上海 | 博士 | 3 |
北京 | 本科 | 1877 |
北京 | 大专 | 190 |
北京 | 硕士 | 154 |
北京 | 博士 | 2 |
北京 | 不限 | 124 |
南京 | 本科 | 61 |
南京 | 大专 | 11 |
南京 | 不限 | 5 |
南京 | 硕士 | 6 |
厦门 | 本科 | 18 |
厦门 | 不限 | 3 |
厦门 | 大专 | 7 |
厦门 | 硕士 | 2 |
天津 | 本科 | 15 |
天津 | 不限 | 1 |
天津 | 大专 | 4 |
广州 | 本科 | 232 |
广州 | 大专 | 84 |
广州 | 不限 | 12 |
广州 | 硕士 | 7 |
成都 | 本科 | 99 |
成都 | 大专 | 26 |
成都 | 硕士 | 2 |
成都 | 不限 | 8 |
杭州 | 本科 | 303 |
杭州 | 大专 | 58 |
杭州 | 硕士 | 19 |
杭州 | 不限 | 26 |
武汉 | 不限 | 10 |
武汉 | 本科 | 44 |
武汉 | 大专 | 14 |
武汉 | 硕士 | 1 |
深圳 | 本科 | 395 |
深圳 | 硕士 | 17 |
深圳 | 大专 | 94 |
深圳 | 不限 | 20 |
深圳 | 博士 | 1 |
苏州 | 大专 | 5 |
苏州 | 本科 | 29 |
苏州 | 硕士 | 3 |
西安 | 本科 | 24 |
西安 | 不限 | 3 |
西安 | 大专 | 10 |
西安 | 硕士 | 1 |
长沙 | 本科 | 15 |
长沙 | 大专 | 2 |
长沙 | 不限 | 7 |
长沙 | 硕士 | 1 |
1.4 having对数据过滤
SELECT city,count(1) FROM data.dataanalyst
group by city
having count(positionId)>=100
out:
上海 | 979 |
北京 | 2347 |
广州 | 335 |
成都 | 135 |
杭州 | 406 |
深圳 | 527 |
1.5找出电子商务岗位数量大于50的城市,并输出数量
SELECT city,count(1) FROM data.dataanalyst
where industryField like '%电子商务%'
group by city
having count(positionId) >= 50
out:
上海 | 166 |
深圳 | 84 |
杭州 | 62 |
北京 | 289 |
广州 | 71 |
1.6求出不同城市里,电商占岗位的比例
SELECT
city,
count(1),
count(if(industryField like '%电子商务%',industryField,null)),
count(if(industryField like '%电子商务%',industryField,null))/count(1)
FROM data.dataanalyst
group by city
out:
上海 | 979 | 166 | 0.1696 |
北京 | 2347 | 289 | 0.1231 |
南京 | 83 | 24 | 0.2892 |
厦门 | 30 | 3 | 0.1000 |
天津 | 20 | 4 | 0.2000 |
广州 | 335 | 71 | 0.2119 |
成都 | 135 | 37 | 0.2741 |
杭州 | 406 | 62 | 0.1527 |
武汉 | 69 | 17 | 0.2464 |
深圳 | 527 | 84 | 0.1594 |
苏州 | 37 | 2 | 0.0541 |
西安 | 38 | 4 | 0.1053 |
长沙 | 25 | 8 | 0.3200 |
1.7求出不同城市里,电商占岗位的比例,且电商数要大于等于10
#注意:SELECT里的除法不能直接替换
count(if(industryField like '%电子商务%',industryField,null))/count(1) 不等于emarket/total
SELECT
city,
count(1) as total,
count(if(industryField like '%电子商务%',industryField,null)) as emarket,
count(if(industryField like '%电子商务%',industryField,null))/count(1)
FROM data.dataanalyst
group by city
having emarket >= 10
order by emarket
武汉 | 69 | 17 | 0.2464 |
南京 | 83 | 24 | 0.2892 |
成都 | 135 | 37 | 0.2741 |
杭州 | 406 | 62 | 0.1527 |
广州 | 335 | 71 | 0.2119 |
深圳 | 527 | 84 | 0.1594 |
上海 | 979 | 166 | 0.1696 |
北京 | 2347 | 289 | 0.1231 |