首页 > 数据库 >【开窗函数】三个SQL题

【开窗函数】三个SQL题

时间:2024-11-17 23:14:43浏览次数:3  
标签:count product 函数 dept select 开窗 SQL dt 202101

         本文主要练习一下lag开窗函数的使用!!!

一、第一题

 建表语句:

create table m1(
    dt string,
    name string,
    dept string,
    score int
);
insert into m1 values ('202101','张三','销售',90),
                      ('202101','李四','技术',90),
                      ('202101','王五','运营',80),
                      ('202101','赵六','销售',70),
                      ('202101','孙七','技术',95),
                      ('202101','周八','运营',93),
                      ('202101','吴九','销售',84),
                      ('202101','郑十','技术',83),
                      ('202102','张三','销售',95),
                      ('202102','李四','技术',95),
                      ('202102','王五','运营',95),
                      ('202102','赵六','销售',95);

注意:实际这个是有一年的数据,这里只列举了部分数据 !

1、计算评分大于等于90的人数以及评分大于等于90的人数环比增长率

with t as (
    select dt,
           dept,
           count(*) people_count
           from m1 where score>=90 group by dt,dept
),t1 as (
   select dt,
        dept,
        people_count,
        lag(people_count,1,people_count) over(partition by dept order by dt) last_count
        from t
) select dt,
         dept,
         people_count,
         (people_count/last_count)-1 huanbi_rate
         from t1;

2、 计算评分有提高的人数

with t as(
    select dt,dept,score,
           lag(score,1) over (partition by name,dept order by dt) last_score
           from m1
)select dt,
        dept,
        count(*) people_count
        from t where score>last_score group by dt,dept;

二、第二题 

 

建表语句:

create table m2(
    dt string,
    order_id1 string,
    order_id0 string,
    info int,
    product string,
    buyer string,
    amount int,
    num int
);
insert into m2 values
('202101','s100000','s100000',0,'苹果','A',10,2),
('202101','s100001','s100000',1,'苹果','A',-10,2),
('202101','s100002','s100002',0,'西瓜','C',50,1),
('202106','s100003'	,'s100003',0,'西瓜','C',50,1),
('202101','s100004'	,'s100004',0,'西瓜','A',50,1);

注意:实际这个是有一年的数据,这里只列举了部分数据 !

1、计算购货人数和购货金额 购货金额排名 

with t as(
   select  dt,
        product,
        count(distinct buyer) purchase_count,
        sum(amount) purchase_amount
        from m2 where amount>0 group by  dt,product
)select * ,
        rank() over (partition by dt order by purchase_amount desc) rank
        from t;

2、 计算复购人数

select d1.dt,d1.product,
       count(1) num
       from m2 d1 join m2 d2
       on d1.buyer=d2.buyer and d1.product=d2.product
       where d1.dt-d2.dt<=5 and d1.dt>d2.dt group by d1.dt,d1.product;

三、第三题 

 1、计算每个月购货人同时购买苹果和西瓜的金额

select dt,
       buyer,
       sum(amount) purchase_amount
       from m2 where product in ("苹果","西瓜") and amount>0
       group by dt,buyer
       having count(product)=2;

标签:count,product,函数,dept,select,开窗,SQL,dt,202101
From: https://blog.csdn.net/m0_57764570/article/details/143801981

相关文章

  • STM32微控制器GPIO库函数
    STM32微控制器GPIO库函数目录概述GPIO库函数基础HAL库与标准外设库GPIO库函数分类GPIO数学基础电阻分压公式输入电流计算输出驱动能力功率计算RC时间常数GPIO应用实例LED控制按钮输入与中断串行通信PWM信号生成常见问题与解决方法GPIO引脚无法正确读取输入状......
  • 东胜物流软件 GetDataListCA SQL注入漏洞复现
    0x01产品简介东胜物流软件是青岛东胜伟业软件有限公司一款集订单管理、仓库管理、运输管理等多种功能于一体的物流管理软件。该公司初创于2004年11月(前身为青岛景宏物流信息技术有限公司),专注于航运物流相关环节的产品和服务。东胜物流信息管理系统货代版采用MS-SQLserver大型......
  • Microsoft Visual Studio VS dumpbin使用查看.obj、.lib、.dll、.exe文件头、段函数
    前言全局说明dumpbin是VS自带的MicrosoftCOFF二进制文件转换器,它显示有关通用对象文件格式(COFF)二进制文件的信息。可以使用dumpbin检查COFF对象文件、标准COFF对象库、可执行文件和动态链接库等。被查看的文件名后缀可以为:.obj、.lib、.dll、.exe一、说明正确情况下,安......
  • 计算机毕业设计在线购物商城超市购物系统日用品商城小商品在线购买网站php+mysql+html
     一.功能介绍用户前台功能:前台主要包括网站首页、今日特卖、限时打折、商品中心、常见问题、我的购物车、登录、注册、商品详情,联系卖家,加入购物车、结算、个人中心等功能模块。今日特卖、限时打折、商品中心模块,用户可以查看全部商品信息,联系卖家、选择商品进行添加购物......
  • php毕业设计购物商城在线购物系统美食购物商城外卖系统点餐系统美食网站php+mysql+htm
    一,功能介绍        前台主要包括网站首页、商品推荐、最新商品、新闻咨询、商品分类、商品资讯、评论、登录、注册、加入购物车、结算、个人中心等功能模块商品推荐、最新商品在商品推荐、最新商品模块,用户可以查看全部商品信息,选择商品进行添加购物车等操作,购物......
  • Windows查看zipfldr.dll动态库中的段函数
    前言全局说明dll是Win中的动态库,开发时想要调用其中的段函数,就要指定,但怎么知道dll中有哪些段函数呢?就需要用工具查看了。一、说明环境:Windows7旗舰版VisualStudio2013二、2.1文件名:2.2文件名:三、3.1文件名:3.2文件名:四、4.1文件名:......
  • CTFWeb篇04-SQL注入
    SQL注入什么是SQL注入SQL注入就是指WEB应用程序对用户输入数据的合法性没有判断,前端传入后端的参数是攻击者可控的,并且参数代入数据库查询,攻击者可以通过构造不同的SQL语句来是实现对数据库的任意操作。即通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串......
  • 基于Java+SSM+JSP+MYSQL实现的宠物领养收养管理系统功能设计与实现六
    一、前言介绍:免费学习:猿来入此1.1项目摘要随着人们生活水平的提高,宠物已经成为越来越多家庭的重要成员。然而,宠物的数量增长也带来了一系列问题,如流浪宠物数量的增加、宠物健康管理的缺失以及宠物领养收养信息的不透明等。这些问题不仅影响了宠物的生存状况,也给社会带来了一定......
  • 基于Java+SSM+JSP+MYSQL实现的宠物领养收养管理系统功能设计与实现五
    一、前言介绍:免费学习:猿来入此1.1项目摘要随着人们生活水平的提高,宠物已经成为越来越多家庭的重要成员。然而,宠物的数量增长也带来了一系列问题,如流浪宠物数量的增加、宠物健康管理的缺失以及宠物领养收养信息的不透明等。这些问题不仅影响了宠物的生存状况,也给社会带来了一定......
  • ThinkPHP自动完成中使用函数与回调方法
    在ThinkPHP框架中,自动完成(autocompletion)是一种在模型对象赋值时自动执行一些操作的功能。这些操作可以是字段的格式化、验证、转换等。在自动完成中,你可以使用函数和回调方法来实现各种自定义功能。使用函数你可以直接在自动完成配置中使用PHP内置函数或自定义函数。示例:......