当前位置: 首页 > news >正文

SQL面试真题解答 数据统计分析,求“同比、环比”等(SQL窗口函数使用)

SQL面试真题解答 数据统计分析,求“同比、环比”等(SQL窗口函数使用)

环比、环比增长率、同比、同比增长率,根据百度百科上的 说明:

环比增长率 环比增长率,一般是指和上期相比较的增长率。 环比增长率=(本期的某个指标的值-上一期这个指标的值)/上一期这个指标的值*100%。 例如,今年5月与今年4月比较。环比更侧重于体现数的短期变化,能够反映出最新趋势和动态。

同比增长率 某个指标的同期比=(当年的某个指标的值-上年同期这个指标的值)/上年同期这个指标的值 即:同比增长率=(当年的指标值-上年同期的值)÷上年同期的值*100%。例如,今年5月与去年5月相比较。同比能够反映出长期的趋势和周期性变化。

解题思路:

01.将数据抽取年份,月份字段,按照年月聚合求总数。

02.利用SQl窗口函数 LAG() 或者 LEAD() 获取前后数据。

03.与昨日比较:按照“日期”排序,取昨日数据。

04.环比:本月与上月比较,将数据按照“年份”分组,按照“月份”排序,取上一个月份数据。

05.同比:今年本月与去年本月比较,将数据按照“月份”分组,按照“年份”排序,取上一个年份数据。

本SQL示例:

未按照月份聚合求和,仍是按照每天查询。 对比昨天,对比上月同一天,对比上年同一天。

考题扩展延伸:

与十天前对比,与三个月前对比,与六个月前对比,与九个月前对比,与三年前对比,与五年前对比。都可以将数据抽取年月日(或者在设计数据库时候,定义年月日字段),使用窗口函数,实现单表查询,做数据分析。

SELECT 	eqm_num,product_month,product_date,yyyy,mm,dd,today_all,today_ng,/*yesterday : 昨天*/yesterday_date,LAG(product_date,1)OVER(PARTITION BY  eqm_num ORDER BY product_date) AS yesterday,LAG(today_all,1)OVER(PARTITION BY  eqm_num ORDER BY product_date) AS yesterday_all,/*mm : 上个月*/last_month_date,LAG(product_date,1)OVER(PARTITION BY eqm_num, yyyy, dd ORDER BY mm) AS mm_day,LAG(today_all,1)OVER(PARTITION BY  eqm_num,yyyy, dd ORDER BY mm) AS mm_day_all,/*yyyy : 上一年*/last_year_date,LAG(product_date,1)OVER(PARTITION BY eqm_num, mm, dd ORDER BY yyyy) AS yyyy_day,LAG(today_all,1)OVER(PARTITION BY eqm_num, mm, dd ORDER BY yyyy) AS yyyy_day_all
FROM (/**/SELECT product_month,product_date,DATEADD(YEAR, -1, product_date) AS last_year_date,DATEADD(MONTH, -1, product_date) AS last_month_date,DATEADD(DAY, -1, product_date) AS yesterday_date,YEAR(product_date) AS yyyy,MONTH(product_date) AS mm,DAY(product_date) AS dd,eqm_num,today_all,today_ng,deletedFROM dbo.tbl_dailyWHERE deleted = 0/**/
)AS aa
WHERE deleted = 0
ORDER BY eqm_num,product_date
http://www.lryc.cn/news/385658.html

相关文章:

  • 【递归、搜索与回溯】floodfill算法二
  • Dataease安装,配置Jenkins自动部署
  • 关于IDEA启动报错 【JAVA_HOME does not point to a valid JM installation】
  • 设置小蓝熊的CPU亲和性、CPU优先级再设置法环的CPU亲和性
  • Oracle中的序列(Sequence)是一种数据库对象
  • 热点观察 | 《姜饼人王国》新作来袭、《Monopoly GO!》荣登5月全球畅销榜榜首
  • 智能网络构建:探索大模型在网络领域的应用
  • C++编程逻辑讲解step by step:定义一个Person类,它的每个对象表示一个人。
  • DBdoctor产品介绍
  • 一加Ace3 刷机救砖简化说明
  • 【服务器05】之【登录/注册账号成功转至游戏场景】
  • 平价蓝牙耳机推荐性价比高,性价比高的蓝牙耳机学生党推荐
  • 【华为战报】5月、6月HCIP考试战报!
  • OBD诊断
  • Elasticsearch 聚合查询
  • adb remount fails - mount: ‘system‘ not in /proc/mounts 解决办法
  • 百元蓝牙耳机推荐2024哪个好?蓝牙耳机性价比之王推荐
  • Spring项目报错解读与全部报错详解
  • 10秒教会你mysql的连接
  • 万物皆可爬——亮数据代理IP+Python爬虫批量下载百度图片助力AI训练
  • OpenCv形态学(一)
  • CSS基础汇总
  • cocos creator让所有button点击时播放音效
  • mybatisplus自带的雪花算法(IdType.ASSIGN_ID)无法自动生成弊端缺点,以及改进方法
  • 单位转换:将kb转换为 MB ,GB等形式
  • 优思学院|「按计划推动型」与「需求拉动型」的生产模式
  • 解释什么是lambda函数?它有什么好处?
  • 码农:如何快速融入团队
  • Android 通知组
  • 【机器学习】ChatTTS:开源文本转语音(text-to-speech)大模型天花板