SQL:Group by

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

你可能感兴趣的:(SQL,初学,数据分析)