sql按某个字符截取字符串_截取字符串字符 c#_sql字符串截取

文末扫海报二维码领【MySQL安装包+SQL直播预习题】

图片源于网络

眼看着,10月过去了一半,金9银10的招聘季就要结束了。

各位准数据分析师们的面试进度如何?

相信大家都知道,入职数据分析师需要经历两道专业的面试关卡:业务面+技术面

今天,Amber就来和大家谈下两道关卡中的技术面。

数据分析师在日常的工作中,从数据库中取数、数据处理、清洗可以说是占用了80%的工作时间,真正的分析过程也就只有剩余的20%。

因此,作为取数必备的工具语言SQL,是数据分析技术面中最常考、必考的题目。

这就直接导致了,许多学艺不精的SQL新手,提前退出了offer的争夺…

sql按某个字符截取字符串_截取字符串字符 c#_sql字符串截取

所以说,SQL Boy也不是那么好当的

接下来sql字符串截取,Amber来为大家梳理下SQL面试中的小秘诀~

1

80%的SQL题都在考察的语法是什么?

为方便大家理解每个函数的作用,先建一个表,后面以这个为示例。

如果有千万用户数据,想知道有多少去重的用户数?— 去重 distinct

-- 罗列不同的id
select distinct id from table_1

-- 统计不同的id的个数
select count(distinct id) from  table_1

-- 优化版本的count distinct
select count(*) from
(select distinct id from table_1) tb

distinct 会对结果集去重,对全部选择字段进行去重,并不能针对其中部分字段进行去重。使用count distinct进行去重统计会将reducer数量强制限定为1,而影响效率,因此适合改写为子查询。

想分性别进行统计,看看男女各多少?—聚合函数和group by

-- 统计不同性别(F、M)中,不同的id个数
select count(distinct id) from table_1
group by sex
-- 其它的聚合函数例如:max/min/avg/sum

-- 统计最大/最小/平均年龄
select  max(age), min(age),avg(age) from 
table_1
group by id

聚合函数帮助我们进行基本的数据统计,例如计算最大值、最小值、平均值、总数、求和。

只想查看A公司的男女人数数据?—筛选 where/having

-- 统计A公司的男女人数
select count(distinct id) from table_1
where company = 'A'
group by sex


-- 统计各公司的男性平均年龄,并且仅保留平均年龄30岁以上的公司
select company, avg(age) from table_1
where sex = 'M'
group by company
having avg(age)>30;

希望查询结果从高到低/从低到高排序?—排序 order by

-- 按年龄全局倒序排序取最年迈的10个人
select id,age from table_1 order by age DESC 
limit 10

将数值型的变量转化为分类型的变量?—case when 条件函数

-- 收入区间分组
select id,
(case when CAST(salary as float)<50000 Then '0-5万'
when CAST(salary as float)>=50000 and CAST(salary as float)<100000 then '5-10万'
when CAST(salary as float) >=100000 and CAST(salary as float)<200000 then '10-20万'
when CAST(salary as float)>200000 then '20万以上'
else NULL end 
from table_1;

case 函数的格式为(case when 条件1 then value1 else null end), 其中else 可以省,但是end不可以省。

在这个例子里也穿插了一个CAST的用法,它常用于string/int/double型的转换。

concat( A, B…)返回将A和B按顺序连接在一起的字符串。

如:concat(‘foo’, ‘bar’) 返回’foobar’

select concat('www','.iteblog','.com') from
iteblog;

--得到 www.iteblog.com

split(str, regex)用于将string类型数据按regex提取,分隔后转换为array。

-- 以","为分隔符分割字符串,并转化为array
Select split("1,2,3",",")as value_array from table_1;

-- 结合array index,将原始字符串分割为3列
select value_array[0],value_array[1],value_array[2] from 
(select  split("1,2,3",",")as value_array from table_1 )t

substr(str,0,len) 截取字符串从0位开始的长度为len个字符。

select substr('abcde',3,2) from
iteblog;

-- 得到cd

篇幅有限sql字符串截取,先为大家整理这么多,多进行练习,多进行组合使用,效果会更好~

限时特惠:本站每日持续更新海量设计资源,一年会员只需29.9元,全站资源免费下载
站长微信:ziyuanshu688