介绍背景
由于SQL作为大数据领域或者说大数据相关岗位必不可少的一门技术,虽然入门起来并不难,但是在真实使用和企业应用中,不管是开发人员,分析人员,还是产品人员都会遇到或多或少的问题
就在我还刚是个刚入门的菜鸟的时候,有一道印象很深的面试题,困扰了我许久,虽然这道题一点不难,甚至在玩会之后,顿时怀疑自己是不是不适合干这一行。
为什么说印象很深呢?
因为我曾多次经历,甚至有着不同的变种,但是归根结底,原理是一样的。
诸如(面试题):
- 如何用SQL查询连续连续3天登录用户?
- 如何用SQL查询连续最近七天内连续三天活跃用户数?
- 如何用SQL查询连续n天登录的用户?
开始解题
- 1. 首先理解一下题目,以上三个问题无非都围绕这一个主题,那就是"连续",
- 2. 在数据领域所有的结果都是基于记录统计,因此这里本质含义其实是查询一个人是否连续三天都有数据记录
- 3. 然后在回到问题的动态变化参数上,不管是3天,7天,还是n天,在SQL领域都可以通过排序,窗口,分析或者统计函数变相的统计出来
而这里,我主要是以窗口函数作为主要的技术实现(不要问为什么,这是最常见,也是相对最有技术含量的方案)
那么问题来了,什么是窗口函数呢?
窗口函数:也叫OLAP函数(Online Anallytical Processing,联机分析处理),可以对数据库数据进行实时分析处理。
这里的OLAP和我在数仓专栏里面介绍的OLAP其实是一个含义,只是这里专指用来实现OLAP功能的一个SQL函数
窗口函数的基本语法如下:
介绍背景
由于SQL作为大数据领域或者说大数据相关岗位必不可少的一门技术,虽然入门起来并不难,但是在真实使用和企业应用中,不管是开发人员,分析人员,还是产品人员都会遇到或多或少的问题
就在我还刚是个刚入门的菜鸟的时候,有一道印象很深的面试题,困扰了我许久,虽然这道题一点不难,甚至在玩会之后,顿时怀疑自己是不是不适合干这一行。
为什么说印象很深呢?
因为我曾多次经历,甚至有着不同的变种,但是归根结底,原理是一样的。
诸如(面试题):
- 如何用SQL查询连续连续3天登录用户?
- 如何用SQL查询连续最近七天内连续三天活跃用户数?
- 如何用SQL查询连续n天登录的用户?
开始解题
- 1. 首先理解一下题目,以上三个问题无非都围绕这一个主题,那就是"连续",
- 2. 在数据领域所有的结果都是基于记录统计,因此这里本质含义其实是查询一个人是否连续三天都有数据记录
- 3. 然后在回到问题的动态变化参数上,不管是3天,7天,还是n天,在SQL领域都可以通过排序,窗口,分析或者统计函数变相的统计出来
而这里,我主要是以窗口函数作为主要的技术实现(不要问为什么,这是最常见,也是相对最有技术含量的方案)
那么问题来了,什么是窗口函数呢?
窗口函数:也叫OLAP函数(Online Anallytical Processing,联机分析处理),可以对数据库数据进行实时分析处理。
这里的OLAP和我在数仓专栏里面介绍的OLAP其实是一个含义,只是这里专指用来实现OLAP功能的一个SQL函数
窗口函数的基本语法如下:
介绍背景
由于SQL作为大数据领域或者说大数据相关岗位必不可少的一门技术,虽然入门起来并不难,但是在真实使用和企业应用中,不管是开发人员,分析人员,还是产品人员都会遇到或多或少的问题
就在我还刚是个刚入门的菜鸟的时候,有一道印象很深的面试题,困扰了我许久,虽然这道题一点不难,甚至在玩会之后,顿时怀疑自己是不是不适合干这一行。
为什么说印象很深呢?
因为我曾多次经历,甚至有着不同的变种,但是归根结底,原理是一样的。
诸如(面试题):
- 如何用SQL查询连续连续3天登录用户?
- 如何用SQL查询连续最近七天内连续三天活跃用户数?
- 如何用SQL查询连续n天登录的用户?
开始解题
- 1. 首先理解一下题目,以上三个问题无非都围绕这一个主题,那就是"连续",
- 2. 在数据领域所有的结果都是基于记录统计,因此这里本质含义其实是查询一个人是否连续三天都有数据记录
- 3. 然后在回到问题的动态变化参数上,不管是3天,7天,还是n天,在SQL领域都可以通过排序,窗口,分析或者统计函数变相的统计出来
而这里,我主要是以窗口函数作为主要的技术实现(不要问为什么,这是最常见,也是相对最有技术含量的方案)
那么问题来了,什么是窗口函数呢?
窗口函数:也叫OLAP函数(Online Anallytical Processing,联机分析处理),可以对数据库数据进行实时分析处理。
这里的OLAP和我在数仓专栏里面介绍的OLAP其实是一个含义,只是这里专指用来实现OLAP功能的一个SQL函数
窗口函数的基本语法如下: