![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SQL
数据小斑马
浙大硕士毕业,互联网数据分析师,喜欢深入业务,也喜欢挖掘技术,希望和大家可以多多交流
展开
-
SQL窗口函数不懂?五大应用场景让你一步到位
在窗口分析函数出现之前,存在很多 SQL 难以解决的问题,很多都要通过复杂的相关子查询完成,或到Excel中用函数处理2003年ISO SQL标准加入了窗口分析函数,使得这些难题轻松被攻克,大大提升了效率,减少了Excel卡死导致前功尽弃的情况本文从聚合/排序/极值/移动/切片五大场景来讲解窗口分析函数窗口分析函数,可以指定数据窗口进行统计分析,它和普通聚合函数的区别:① 窗口函数对每个组...原创 2020-04-08 20:21:44 · 2782 阅读 · 3 评论 -
Hive Sql 性能优化——看这一篇就够啦!
今天听组内SQL小王子分享了一篇Hive Sql性能优化的总结报告,甚觉精彩,赶紧来分享给大家!!一、尽量使用索引,避免全表查询① 在where 和 order by 常用的字段上创建索引,提升效率的核心!② where子句中尽量避免进行nul值判断,少使用!=,<>等操作符,等号左边避免函数、算数和其它表达式运算,这此操作都会导致索引无效,启动全表查询③ where 子句中将...原创 2019-05-29 22:34:10 · 11238 阅读 · 0 评论 -
SQL技巧高级系列①——窗口分析函数的使用
平常我们使用 hive或者 mysql时,一般聚合函数用的比较多。但对于某些偏分析的需求,group by可能很费力,子查询很多,这个时候就需要使用窗口分析函数了~hive、oracle提供开窗函数,mysql不提供group by 与over(partition by …)主要区别为,带上group by的hive sql语句只能显示与分组聚合相关的字段,而带上over(partition ...原创 2019-05-19 19:17:06 · 2499 阅读 · 1 评论 -
SQL技巧高级系列②——聚合函数和CASE WHEN的使用
之前博客有提到过group by 具有分组统计功能,但是如果分组的字段是连续型变量,想要转化成分类变量再汇总,改如何处理呢?——Case when 就是最佳的解决办法一、什么是CASE WHEN?case when可以说是一种特定的分类方式,比Group by更加灵活,更能符合业务错综复杂的分类需求二、CASE WHEN的用法有简单case表达式和搜索case表达式两种,比如根据用户的充值...原创 2019-05-19 20:04:44 · 9997 阅读 · 2 评论 -
SQL①—建表/更新表/删除表
作为一枚数据分析师,查询数据是最主要的,但在某些情况下也会用到建表/更新表/删表,比如:当表数据太多,直接从原表查询效率会非常低下——通过限定条件创建小表会大大提升效率当表数据太多,哪怕限定条件创建表仍然太大,怎么办?——通过先创建部分表再依次插入可解决, 虽然步骤相对麻烦了些:-D当创建的表有误,或者需要重新建表但不想更改表名,怎么办?——通过删除表再创建表即可解决一、建表2种方法...原创 2019-05-19 12:13:02 · 1642 阅读 · 0 评论 -
SQL技巧初级系列③——数据拼接(集合运算union和列连接join)
数据拼接有两种方法,以行为单位进行的集合运算,和以列为单位进行的连接。这篇博文就想介绍下这两种方法。一、集合运算高等数学中有介绍过集合的概念,分为并集,交集,差集。并集就是多个集合汇总,交集是多个集合的公共部分,差集是一个集合减去另一个集合。对应于Sql中就是union,intersect和except。①Union——并集Select dt,userid from my_user_lo...原创 2019-05-19 17:25:04 · 2645 阅读 · 0 评论 -
SQL技巧中级系列①——字符串函数的使用
1. 字符串长度函数:length语法: length(string A)返回值: int说明:返回字符串A的长度hive> select length('abcedfg') from lxw_dual, 结果为7hive> select userid where length(deviceid) <>0, 筛选出统计到设备ID的用户ID2. 字符串反转函数...原创 2019-05-19 18:18:47 · 936 阅读 · 0 评论 -
SQL技巧中级系列②——日期函数的使用
1、返回当前的时间2.1 返回当前的年月日select current_date()select from unixtime(unix_timestamp(),‘yyyy-MM-dd’)2.2 返回当前的时间(到秒)select current_timestampselect from_unixtime(unix_timestamp(),‘yyyy-MM-dd hh:mm:ss’)2...原创 2019-05-19 18:28:45 · 878 阅读 · 0 评论 -
SQL技巧初级系列②—聚合和排序(group by,having,order by)
每天数的库都会新增大量数据,作为数的分析师,如何从这些海量数的中看出点玩意来呢?分组汇总就是其中一个最最基础的方法,这里总结下sql中的明星用法——聚合一、聚合函数① Count:用作计数,可用distinct去重,常见用法:count()和 count(1)——包含null,两者不同在于查询速度,假如表沒有主键(Primary key), 那么count(1)比count()快count...原创 2019-05-19 13:31:58 · 5525 阅读 · 0 评论