美文网首页
数据分析之 SQL

数据分析之 SQL

作者: sixkery | 来源:发表于2018-11-11 20:23 被阅读77次
SQL

一般来说SQL主要是指SQL查询语言,mysql主要是数据库。

检索数据简单应用

SELECT * FROM 数据库.表名
  • 表示通配符,匹配表中所有字段。
# 搜索某一个字段
SELECT city FROM 数据库.表名; 
# 搜索某两个个字段
SELECT city,name FROM 数据库.表名;
# 限制搜索一百条数据
SELECT city,name FROM 数据库.表名
limit 100;

这里的分号在图形操作界面可以删掉,在命令行操作一定要带上。

排序用 order by 一般用数字字段来

# 升序排列
SELECT city,name FROM 数据库.表名
order by id;
# 降序排列
SELECT city,name FROM 数据库.表名
order by id desc
limit 100;

过滤用 where

SELECT city,name FROM 数据库.表名
where name = '杭州;

SELECT * FROM 数据库.表名
where id > 100;

SELECT * FROM 数据库.表名
where id between 100 and 200;
SELECT * FROM 数据库.表名
where city in ('上海','长沙');

SELECT * FROM 数据库.表名
where city not in ('上海','长沙');

SELECT * FROM 数据库.表名
where city != '上海';

SELECT * FROM 数据库.表名
where city <> '上海';

and or
通常的场景是筛选条件很多。
筛选出城市是上海,学历为本科或者工作经验为1-3年的。

SELECT * FROM 数据库.表名
where city = '上海';
and education = '本科'
or workyear = '1-3年'

这样执行得不到我们想要的结果的,因为在SQL中and优先执行。
那么上面的代码解释起来就是:满足城市是上海和学历是本科或者工作年限为1-3年。也就是下面的代码:

SELECT * FROM 数据库.表名
where (city = '上海';
and education = '本科')
or workyear = '1-3年'

我们的需求应该这样写:

SELECT * FROM 数据库.表名
where city = '上海';
and (education = '本科'
or workyear = '1-3年')

一旦遇到复杂的逻辑一定要加上括号,最里面的括号优先级最高。

模糊查找

# 包含后端
SELECT * FROM 数据库.表名
where secondtype like '%后端%'
# 以后端开头
SELECT * FROM 数据库.表名
where secondtype like '后端%'
# 以后端结尾
SELECT * FROM 数据库.表名
where secondtype like '%后端'

分组

按照城市分组
SELECT * FROM 数据库.表名
group by city

严格一点的写法,选择城市,不能用 * 号。

SELECT city FROM 数据库.表名
group by city

有一个需求这样:想知道不同城市下招聘的数量,就可以对城市进行分组,对职位进行计数:

SELECT city count(positionID) FROM 数据库.表名
group by city

又有需求啦:想知道城市中招聘数量在一百以上的数据,招聘岗位少的我希望把它过滤掉。这时候就是对分组 group by 提出了一个过滤 where 的挑战。
在 SQL 中这种语法叫做 having 可以把它等价于 where 只是这个 having 只是单纯针对分组之后的结果进行过滤。
实现起来就是这样的:

SELECT city,count(1) FROM 数据库.表名
group by city
having count(positionID) >= 100

还可以在过滤的基础上分组:

SELECT city,count(1) FROM 数据库.表名
where industryField like %电子商务%
group by city
having count(positionID) >= 50

等价于:

SELECT city,count(1) FROM 数据库.表名

group by city
having count(if(where industryField like %电子商务%,1,null)) >= 50

如果满足条件就为 1 计数,否则为 null 不计数。


把薪资过滤出来,提取最小薪资最大薪资。

select
left(salary,location('k',salary)-1),
salary
from 表
substr(salary,locate('-',salary)+1,length(salary)-locate('-',salary)-1)
#从中间截取字段,从哪里开始,到哪里结束
from 表

利用子查询:

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,
    salary from(
        select
        left(salary,location('k',salary)-1) as bottem,
        substr(salary,locate('-',salary)+1,length(salary)-locate('-',salary)-1) as top,
        salary
        from 表 ) as t

相关文章

  • 数据分析指北 - 基础( 基础数据操作之四,从SQL的case,

    数据分析指北 - 基础( 基础数据操作之四,从SQL的case,group by,join 到工具KNIME ) ...

  • 数据分析之SQL常问知识点

    数据分析之SQL常问知识点 一:Insert into select 语句 与 select into from ...

  • 数据分析之 SQL

    一般来说SQL主要是指SQL查询语言,mysql主要是数据库。 检索数据简单应用 表示通配符,匹配表中所有字段。 ...

  • iOS数据库存储之SQLite3

    资源连接: iOS数据库存储之SQL语句; iOS数据存储之文件沙盒; iOS数据存储之NSCoding; SQL...

  • 【2020-06-16】sqlite3和sqlitebrowse

    SQL取数重要性 数据分析是数据科学家基础 SQL取数是数据分析基础 数据科学家、模型开发人员、数据分析师80%的...

  • sql学会这几步,数据分析就能立马掌握

    什么,sql也能做分析? 常见的数据清洗,预处理,,数据分类,数据筛选,分类汇总,以及数据透视等操作,用SQL一样...

  • 数据分析常用函数

    作为数据分析师,SQL是必备技能,因为数据分析第一步是从数据库中获取数据,而SQL是方便的取数工具。那如何学...

  • 数据分析之SQL入门

    前言 作为数据分析师只会python是远远不够的,连面试都应付不过去一线互联网公司都会考察数据分析基本功,取数所以...

  • 数据分析之SQL检索

    其实数据分析是一个相对于冗杂的工作,我所理解的分析步骤如下(仅个人理解): 1.数据获取(python爬虫等)2....

  • 数据库SQL语句

    数据库之SQL语句(二) 数据库之SQL语句(一)[https://www.jianshu.com/p/460e3...

网友评论

      本文标题:数据分析之 SQL

      本文链接:https://www.haomeiwen.com/subject/sprraftx.html