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

如何开发动态网站/seo是什么职位

如何开发动态网站,seo是什么职位,企业电子商务网站设计的原则,做标签刷单平台网站【腾讯面试题】有一张用户签到表,表中记录了每个用户每天签到的情况。该表包括了三列日期、用户id、用户当日是否签。问题:计算截至当前每个用户已经连续签到的天数(输出表仅包含当天签到的所有用户,计算其连续签到天数&#xff0…

【腾讯面试题】

有一张用户签到表,表中记录了每个用户每天签到的情况。该表包括了三列日期、用户id、用户当日是否签。

 

问题:计算截至当前每个用户已经连续签到的天数(输出表仅包含当天签到的所有用户,计算其连续签到天数)

 

【解题步骤】

1.分组排序

先看问题,要求输出两个字段:当天签到的用户id和连续签到的天数。

翻译成大白话就是,找出当天签到的用户,和每个用户最近一次未签到的日期,计算从上一次未签到日期到当天的间隔天数(这段时间内,该用户每天签到)。

 

该问题是分组排序问题,这类问题要想到《猴子 从零学会SQL》里讲过的窗口函数。

先按用户id分组,找出每个用户id当天未签到的日期,再按日期降序排序。举个例子,下图排在第一个的就是最近一次未签到的日期。

每个用户最近一次未签到日期,SQL如下:

select a.用户id,a.最近一次未签到日期
from 
(select 用户id,日期 ,row_number() over(partition by 用户id order by 日期 desc) as 排序 
from 用户签到表 
where 用户当天是否签到 = '0'
) as a
where a.排序 = 1;

查询结果:

看到这的时候,细心的小伙伴一定发现了,用户id为1的用户,消失了。为什么呢?

因为在给出的示例数据中,用户id为1的用户每天都签到,没有未签到日期。那么这类用户的连续签到天数该如何计算呢?

我们可以查询用户签到表的开始日期,将那天作为该用户开始签到的日期,计算该日期和当天的间隔,然后加1,即为该用户的连续签到天数。

查询用户签到表开始日期的SQL如下:

select min(日期) as 用户签到表的开始日期
from 用户签到表;

2.表联结

题目要求,输出表仅包含当天签到的所有用户。因此需要2个表,表b为当天签到的用户id,表a为每个用户id的最近一次未签到日期。

根据上文描述知道,有的用户每天都签到,在表b中,该用户不存在。因此在以用户id关联两个表时,若在表b中用户id关联不到时,使用用户签到表的开始日期,计算连续签到天数。

对应SQL如下:

select b.用户id,(case when a.用户id is null then datediff('2021-03-22',用户签到表的开始日期)+1when a.用户id is not null then datediff('2021-03-22',a.最近一次未签到日期)end) as 连续签到天数
from
(select 用户idfrom 用户签到表where 日期 = '2021-03-22' #当天and 用户当天是否签到 = '1'
) as b
left join
(select a.用户id,a.最近一次未签到日期from (select 用户id,日期,row_number() over(partition by 用户id order by 日期 desc) as 排序from 用户签到表where 用户当天是否签到 = '0') as awhere a.排序 = 1
) as a 
on a.用户id = b.用户id;

 查询结果:

【本题考点】

遇到要取出每个分组(用户/部门/月份)中,某个字段的值最高/最低/处于第n个的记录,也就是分组排序问题,要想到用窗口函数:

<窗口函数> over (partition by <用于分组的列名>order by <用于排序的列名>) 

http://www.lbrq.cn/news/946297.html

相关文章:

  • 北京网站制作业务如何开展/bt搜索引擎
  • 做网站视频的赚钱吗/app代理推广平台
  • 做背景视频哪个网站好/营销技巧和话术
  • 网站建设企业宣传册/浙江网站推广公司
  • 学而思的网站哪里做的/seo关键词优化公司
  • 平台类网站建设方案/关键词搜索引擎优化推广
  • 门户网站后台管理模板/建立个人网站
  • 关于做暧暧的网站/汕头网站关键词推广
  • 中山火炬开发区建设局网站/安卓优化大师下载
  • 四川建设网站/百度推广的定义
  • 做网站文字编辑工作好不好/如何优化企业网站
  • 阿里云建立网站备案/唯尚广告联盟app下载
  • 政府网站建设绩效评估指标/收录平台
  • 陕西建设网站官网/佛山全市核酸检测
  • 做美女图片网站犯法吗/想做推广哪个平台好
  • 长沙网站开发湖南微联讯点靠谱/什么是百度竞价
  • 怎样做一个企业的网站建站/seo优化的主要任务包括
  • 二维码制作方法/怎么样优化关键词排名
  • 中小学网站建设探讨/新闻头条最新消息今天发布
  • 贵池网站建设/新网站百度收录要几天
  • 龙岗网站建设服务/seo公司系统
  • 哪些香港网站不能访问/郑州seo技术培训班
  • 东莞市建设公共交易中心网站/seo关键词推广怎么做
  • 个人做众筹网站合法吗/网页设计制作
  • 厦门网站建设公司哪个好/定制建站网站建设
  • 嘉兴网站建设哪家好/seo体系百科
  • 网站空间指的是什么/怎样建立自己网站
  • 怎样优化网站排名靠前/百度引擎提交入口
  • 网站做微信支付/百度竞价返点开户
  • 制作网站的方法/网址搜索域名查询
  • Linux的生态与软件安装
  • Lua(数据库访问)
  • 前端核心进阶:从原理到手写Promise、防抖节流与深拷贝
  • Linux parted问题:指定分区边界失效
  • k8s-MongoDB 副本集部署
  • 深入探索嵌入式仿真教学:以酒精测试仪实验为例的高效学习实践