SQL查询语句基于MYSQL学习笔记


本例是基于mysql的SQL语句查询,在mysqlworkbench进行。

模糊查询:like 和 分组:group by

模糊查询:

SELECT * from data.dataanalyst
where secondType like '%开发%'
// 通配符'%'是指多个字符,而另一种'_'指一个字符。
// 多条件查询,其中and比or优先级要高,如不能很好判断,建议使用括号
where (city = '上海' 
and education='本科') 
or workYear='3-5年'

分组:

select city,count(1) from data.dataanalyst
group by city
// 在data.dataanalyst中查询city,count(1),并根据city进行分组
having count(positionId)>= 200
//判断count(positionId)>= 200,只返回大于200的计数

组合用法:

select 
city,
count(1) as total,
// as 进行别名设置
count(if(industryField like '%电子商务%',industryField,null))  as emarket,
count(if(industryField like '%电子商务%',industryField,null))/count(1)
from data.dataanalyst
group by city
having count(if(industryField like '%电子商务%',industryField,null)) >=10
order by emarket
// order by 根据emarket值进行升序排序,如希望进行降序排序则使用 DESC 关键字,如:order by emarket desc

数据处理查询与子查询

select
	case 
		when ((bottom + top)/2) <=10 then '0-10'
		when ((bottom + top)/2) <=20 then '10-20'
		when ((bottom + top)/2) <=30 then '20-30'
		else '30+'
	end as cases,
salary
from(
select 
left(salary,locate('k',salary)-1) as bottom,
# left(right(salary,length(salary)-locate('-',salary)),length(salary)-locate('-',salary)-1),
substr(salary,locate('-',salary)+1,length(salary)-locate('-',salary)-1) as top,
salary
from data.dataanalyst) 
as t
// case是进行数据的判断分组
//进行子查询时需要进行子表单的重新命名此处命名为’t‘
//substr为str查询关键字
//left同excel中left,right同excel中的right。length同len,求长度。locate同find查找关键字位置,具体参数设置,在这里就不写了

在这里插入图片描述

select * 
from data.dataanalyst
where city in
( select city from data.dataanalyst
 group by city having count(positionId) >=100)
 //子查询为条件的查询用法

jion查询

在这里插入图片描述
在这里插入图片描述
进行多张表的数据分析
子查询:两张表

select * from data.dataanalyst
where companyId = (
select companyId from data.company 
where companyShortName = '唯医网'
 )
 # 使用where进行查询,但是只返回公司下面的职位,对于公司本身的信息没有涉及

进jion查询:
jion指匹配能匹配上的,及去交集

select * from data.dataanalyst as da
join data.company as c  on da.companyId = c.companyId
//  是指后面的表关联起来

left jion指匹配都进行匹配,保证第一表信息是完整的

select * from data.dataanalyst as d
left join (select * from data.company
where companySize = '150-500人') as c
on d.companyId=c.companyId

过滤出空值 c.companyId is null

select * from data.dataanalyst as d
left join (select * from data.company
where companySize = '150-500人') as c
on d.companyId=c.companyId
where c.companyId is null
//此处为 is
select  count(c.companyId)/count(1)from data.dataanalyst as d
left join (select * from data.company
where companySize = '150-500人') as c
on d.companyId=c.companyId

注:
(删除数据库
drop database <数据库名>)
(删除表
use <数据库>;
drop table<表名>

回顾

主要将liking ,group by, case,jion 进行学习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值