excel 截取某字符前_js的indexof和字符截取_sql字符串截取

泡泡好胖

点击上方蓝字“泡泡好胖”关注我,收获互联网数据技能指南~

关注

前些天在网上冲浪的时候看到一个案例咨询,问说世界500强的数据分析要不要去,评论区一片爆炸——“楼主能分享一下文科生怎么转行做数据分析吗??”、“SQL、python这些学起来好痛苦!”我看着屏幕苦笑,数据分析岗位现在的热门程度如果要形容的话,基本就是随便抓一个微博网友都知道这个岗位了。

所以,这么多人感兴趣、想转行、想尝试的岗位,到底该从哪里入手进行准备呢?——dangdangdang~ 当然是SQL啦!

SQL是数据分析师必备技能

大家都知道,找工作之前要看招聘启事的嘛,数据分析师的招聘JD你们一定不陌生:

excel 截取某字符前_js的indexof和字符截取_sql字符串截取

可以说,不是每个数据分析岗都要求python,但是每个数据分析岗,都、需、要会SQL。

我曾在滴滴、美团、平安科技的数据分析类岗位实习过,实习期间会大量运用sql进行取数。也参与了2018年的秋招,做过网易、拼多多、新浪等等公司的数据分析笔试题,还是比较了解SQL常考的题目类型的。

我不是技术大神,但是我——会抓重点!

写这篇文章是希望帮助还没有实战过SQL的小伙伴、或者了解一些SQL语句、但是担心自己了解的太片面的小伙伴,帮助你们了解:如果想要面试数据分析岗位,最优先需要掌握的SQL技能是哪些呢?

读完本文,你能快速知道:

(1)除了select 这种基本的语句sql字符串截取,我最应该马上掌握的SQL语句和知识是什么?

(2)面试中SQL题80%都在考察的语法是什么?

(3)这些语法应该怎么使用?

SQL基础知识介绍

本文将从三大块介绍入门SQL需要掌握的语法和知识,分别是:查询,包括最基础的选择(select)和连接(join/union);最常用的语法(distinct/group by/order by等);一些小小的取数技巧(组内排序、取前百分之多少的值、时间函数)。

介绍完了三大块知识后,后面会有常见的SQL面试/笔试题,可以练习和交流。接下来让我们开始吧~

excel 截取某字符前_sql字符串截取_js的indexof和字符截取

一、最基本(选数据)

1. 从某张表选一列数据

## 从table_1中选择a这一列

select a from table_1

2. 从多张表里,取多个字段

## table_1中有id,age; table_2中有id,sex。

## 想取出id,age,sex 三列信息

##将table_1,table_2 根据主键id连接起来

select a.id,a.age,b.sex from (select id,age from table_1) a

join (select id, sex from table_2) b

on a.id =b.id

3. 介绍一下几种join(敲重点,很容易问的哦)

(1)join : hive的join默认是inner join,找出左右都可匹配的记录;

(2)left join: 左连接,以左表为准,逐条去右表找可匹配字段,如果有多条会逐次列出,如果没有找到则是NULL;

(3)right join:右连接,以右表为准,逐条去左表找可匹配字段,如果有多条会逐次列出,如果没有找到则是NULL;

(4)full outer join: 全连接,包含两个表的连接结果sql字符串截取,如果左表缺失或者右表缺失的数据会填充NULL。

4.两张表数据的字段一样,想合并起来

## 合并两张表的数据

select * from

(select id from table_1

UNION ALL

select id from table_2) t

注:union和union all 均基于列合并多张表的数据,所合并的列格式必须完全一致。union的过程中会去重并降低效率,union all 直接追加数据。union 前后是两段select 语句而非结果集

二、最常用(不是用这个就是用那个,更有可能多重组合)

1. 去重:distinct

## 罗列不同的id

select distinctid from table_1

2. 统计:count/max/avg/sum等

## 统计不同的id的个数

select count(distinct id) from table_1

3. 按某维度进行统计: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

4.筛选: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;

5. 排序:order by

## 按年龄全局倒序排序取最年迈的10个人

select id,age from table_1

order by age

DESC

limit 10

6. 条件函数:case when /if

## 将salary按一定规则分组

select id,

case when salary

when salary >=50000 and salary

when salary >=100000 and salary

when salary >200000 then ’20w+’

else NULL end

from table_1;

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

7.字符串函数:concat/substr

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

select concat(‘www’,’.iteblog’,’.com’) from table1;

## 得到

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

select substr(‘abcde’,3,2) from table1;

SQL基础进阶:常用函数

1 . 排序:row_number/rank/dense_rank

## 按照字段salary倒序编号

select *, row_number() over (order by salary desc) as row_num from table_1;

## 按照字段deptid分组后再按照salary倒序编号

select *, row_number() over (partition by deptid order by salary desc) as rank from table_1;

2. 获取topN%的值:percentile

## 获取income字段的top10%的阈值

select percentile(CAST (salary AS int),0.9)) as income_top10p_threshold from table_1;

## 获取income字段的10个百分位点

select percentile(CAST (salary AS int),

array(0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0)) as income_percentiles from table_1;

3. 日期函数:to_date/date_diff等

## 转换为时间数据的格式

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