秦路数据分析sql笔记

本文介绍了SQL的基础操作,包括取数、使用函数、子查询、JOIN操作、数据加载及时间处理。通过实例展示了如何筛选、排序、分组数据,以及如何使用函数进行数据处理,如截取字符串、计算百分比等。还提到了子查询的应用,如在SELECT语句中嵌套查询,以及JOIN操作用于数据关联。最后,简述了如何处理时间类型的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

取数

select * from 数据库.表名

select 列名,列名 from 数据库.表名

限制100条数据:select * from 数据库.表名 limit 100    

按顺序排列 中文升降序没有显著区分:select * from 数据库.表名  orderby 列名 (desc降序) 

排序&限制:select * from 数据库.表名  orderby 列名 limit 100  

按数字筛选:select * from 数据库.表名 where 列名=数字  

按文本筛选:select * from 数据库.表名 where 列名=“文本” 

数字范围内提取:select * from 数据库.表名 where 列名 in (1,2)

文本范围内提取:select * from 数据库.表名 where 列名 in ('文本1 ','文本2 ')

表达否定:!=   <>   not in ()

多条件提取:select * from 数据库.表名 where 列名1=' ' and/or 列名2=' ' and/or 列名3 in ()

多重嵌套条件提取:and优先执行 加括号

模糊查找:包含'a'   select * from 数据库.表名 like '%a%'

                  以'a'为开头   select * from 数据库.表名 like 'a%'

                  以'a'为结尾   select * from 数据库.表名 like '%a'

分组:select * from 数据库.表名 group by 列名

           计数  select 列名,count(按什么进行计数) from 数据库.表名 group by 列名

           去重  select 列名,count(distinct 按什么进行计数) from 数据库.表名 group by 列名

           对分组后的结果进行过滤 select * from 数据库.表名 group by 列名 having count(列名) >= 100 可在后面and进行多重过滤

           select * from 数据库.表名 where 列名 like '%a' group by 列名 having count(列名2) >10

           嵌套if 等于select * from 数据库.表名 group by 列名 having count( if (列名 like '%a%',1,null) ) >10  对返回1,错返回null

利用count算百分比:先用count分别取出 再相除

select
city,
count(1),
count(if(industryField like '%电子商务%',industryField,null)),
count(if(industryField like '%电子商务%',industryField,null)) / count(1)
from data.dataanalyst
group by city

可以用as别名化 以便在后面调用  只能在where groupby层面使用

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

 

函数

截取左边的第一个字符:select left(列名,1) from 数据库.表名 同right

找到某字符所在位置:select left(列名,1),locate('k',列名,从哪个位置开始查找) from 数据库.表名

字符串长度:length

子字符串:substr(列名,从哪里开始,截取长度)

 

子查询

在select外嵌套select:select *  from (select * from data.a) as t

分组&命名:顺序计算

           select

           case

           when mean <=10 then '0-10'

           when mean <=20 then '10-20'

           when mean <=30 then '20-30'

           else '30+'

           end,

           列名 from (select * from data.a) as t

过滤:select * from data.a where 列名 in (select 列名 from data.a groupby city having count(p) >100)

 

join

关联:select * from data.表1 join as d data.表2 as c on d.列名 = c.列名(on表示两者关联)

 

加载

数据过大 可以使用命令行加载数据

 

时间

now() year() month() week() date() ...

格式转换:date_format(time,'%Y-%m')

加天数:date_add()

天数相减:date_sub()

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值