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

桂林北站附近有什么好玩的如何自己制作游戏软件

桂林北站附近有什么好玩的,如何自己制作游戏软件,网站推广优化的公司,中企动力济南分公司【面试题】某游戏数据后台设有“登录日志”和“登出日志”两张表。 「登录日志」记录各玩家的登录时间和登录时的角色等级。 「登出日志」记录各玩家的登出时间和登出时的角色等级。 其中#xff0c;「角色 id 」字段唯一识别玩家。 游戏开服前两天#xff08; 2022-08-13 至… 【面试题】某游戏数据后台设有“登录日志”和“登出日志”两张表。 「登录日志」记录各玩家的登录时间和登录时的角色等级。  「登出日志」记录各玩家的登出时间和登出时的角色等级。 其中「角色 id 」字段唯一识别玩家。 游戏开服前两天 2022-08-13 至 2022-08-14 的角色登录和登出日志如下 一天中玩家可以多次登录登出游戏请使用 SQL 分析出以下业务问题 请根据玩家登录登出的时间统计在开服首日各玩家在线时长分布。 如玩家登录后没有对应的登出日志可以使用当天 23:59:59 作为登出时间时间之间的计算可以考虑使用时间戳函数 unix_timestamp 。【区分在线时间段0-30min 30min-1h 1-2h 2-3h 3-5h 5h 以上区间为左闭右开】 问题 5 统计在开服首日各玩家在线时长分布其中区分在线时间段0-30min 30min-1h 1-2h 2-3h 3-5h 5h 以上区间为左闭右开解释为大白话即为统计2022-08-13在线时间段在 0-30min 、30min-1h 、1-2h 、 2-3h 、3-5h 、5h 以上的玩家各有多少人。 统计人数使用 count() 函数而玩家的在线时间段可以用 case when 子句进行条件判断即使用 case when 子句判断各玩家的总在线时长在哪个在线时间段内 case when 总在线时长_min0 and 总在线时长_min30 then 0-30min when 总在线时长_min30 and 总在线时长_min60 then 30min-1h when 总在线时长_min60 and 总在线时长_min120 then 1-2h when 总在线时长_min120 and 总在线时长_min180 then 2-3h when 总在线时长_min180 and 总在线时长_min300 then 3-5h else 5h以上 end 将问题 4 中统计各玩家每天的总在线时长的查询结果设为临时表 d 则判断开服首日各玩家的总在线时长在哪个在线时间段内的 SQL 的书写方法 select 角色id,(case when 总在线时长_min0 and 总在线时长_min30 then 0-30minwhen 总在线时长_min30 and 总在线时长_min60 then 30min-1hwhen 总在线时长_min60 and 总在线时长_min120 then 1-2hwhen 总在线时长_min120 and 总在线时长_min180 then 2-3hwhen 总在线时长_min180 and 总在线时长_min300 then 3-5helse 5h以上 end) as 在线时间段 from d where 日期 2022-08-13; 利用 with…as 语句来封装临时表 d 的查询语句则 SQL 的书写方法 with d as (with c as (select a.角色id,a.日期,a.登录时间,(case when b.登出时间 is null then concat(a.日期,23:59:59) else b.登出时间 end) as 登出时间 from (select 角色id,日期,登录时间,rank() over(partition by 角色id,日期 order by 登录时间 asc) as 登录排名 from 登录日志) as a left join (select 角色id,日期,登出时间,rank() over(partition by 角色id,日期 order by 登出时间 asc) as 登出排名 from 登出日志) as b on a.角色id b.角色id and a.日期 b.日期 and a.登录排名 b.登出排名 ) select 角色id,日期, sum(round((unix_timestamp(登出时间)- unix_timestamp(登录时间))/60,2)) as 总在线时长_min from c group by 角色id,日期 ) select 角色id,(case when 总在线时长_min0 and 总在线时长_min30 then 0-30minwhen 总在线时长_min30 and 总在线时长_min60 then 30min-1hwhen 总在线时长_min60 and 总在线时长_min120 then 1-2hwhen 总在线时长_min120 and 总在线时长_min180 then 2-3hwhen 总在线时长_min180 and 总在线时长_min300 then 3-5helse 5h以上 end) as 在线时间段 from d where 日期  2022-08-13; 查询结果如下 现在我们来计算各在线时间段的玩家人数同样使用 group by 子句和 count() 函数即可实现。 将上述查询结果设为临时表 e 则 SQL 的书写方法 select 在线时间段,count(角色id) as 玩家人数 from e group by 在线时间段; 将临时表 e 的查询语句代入则 SQL 的书写方法 with d as (with c as (select a.角色id,a.日期,a.登录时间,(case when b.登出时间 is null then concat(a.日期,23:59:59) else b.登出时间 end) as 登出时间 from (select 角色id,日期,登录时间,rank() over(partition by 角色id,日期 order by 登录时间 asc) as 登录排名 from 登录日志) as a left join (select 角色id,日期,登出时间,rank() over(partition by 角色id,日期 order by 登出时间 asc) as 登出排名 from 登出日志) as b on a.角色id b.角色id and a.日期 b.日期 and a.登录排名 b.登出排名 ) select 角色id,日期, sum(round((unix_timestamp(登出时间)- unix_timestamp(登录时间))/60,2)) as 总在线时长_min from c group by 角色id,日期 ) select 在线时间段,count(角色id) as 玩家人数 from (select 角色id,(case when 总在线时长_min0 and 总在线时长_min30 then 0-30minwhen 总在线时长_min30 and 总在线时长_min60 then 30min-1hwhen 总在线时长_min60 and 总在线时长_min120 then 1-2hwhen 总在线时长_min120 and 总在线时长_min180 then 2-3hwhen 总在线时长_min180 and 总在线时长_min300 then 3-5helse 5h以上 end) as 在线时间段 from d where 日期 2022-08-13 ) as e group by 在线时间段; 查询结果如下 可以看到虽然我们已经得到了各在线时间段的玩家人数但是在线时间段的排列是乱序的查看分布情况不是很方便。因此我们需要对在线时间段进行重新排序。 「在线时间段」这一列数据类型为字符串无法用 order by 子句进行简单排序那么如何对在线时间段进行重新排序呢 可以使用 field() 函数。field() 函数是自定义排序函数可以自定义排列顺序使用方法为 order by field(值,str1,str2,str3,str4,……,strn) asc/desc 意思为 将值按照 str1 , str2 , str3 , str4 ,……, strn 的顺序升序asc或者降序排列desc。 将其应用在本问题中则为 order by field(在线时间段,0-30min,30min-1h,1-2h,2-3h,3-5h,5h以上) asc 即将在线时间段这一列的值按照 0-30min , 30min-1h , 1-2h , 2-3h , 3-5h , 5h以上 的顺序升序排列。 将其代入上述 SQL 语句中则统计开服首日玩家的在线时长分布的完整 SQL 的书写方法为 with d as (with c as (select a.角色id,a.日期,a.登录时间,(case when b.登出时间 is null then concat(a.日期,23:59:59) else b.登出时间 end) as 登出时间 from (select 角色id,日期,登录时间,rank() over(partition by 角色id,日期 order by 登录时间 asc) as 登录排名 from 登录日志) as a left join (select 角色id,日期,登出时间,rank() over(partition by 角色id,日期 order by 登出时间 asc) as 登出排名 from 登出日志) as b on a.角色id b.角色id and a.日期 b.日期 and a.登录排名 b.登出排名 ) select 角色id,日期, sum(round((unix_timestamp(登出时间)- unix_timestamp(登录时间))/60,2)) as 总在线时长_min from c group by 角色id,日期 ) select 在线时间段,count(角色id) as 玩家人数 from (select 角色id,(case when 总在线时长_min0 and 总在线时长_min30 then 0-30minwhen 总在线时长_min30 and 总在线时长_min60 then 30min-1hwhen 总在线时长_min60 and 总在线时长_min120 then 1-2hwhen 总在线时长_min120 and 总在线时长_min180 then 2-3hwhen 总在线时长_min180 and 总在线时长_min300 then 3-5helse 5h以上 end) as 在线时间段 from d where 日期 2022-08-13 ) as e group by 在线时间段 order by field(在线时间段,0-30min,30min-1h,1-2h,2-3h,3-5h,5h以上) asc; 查询结果如下 【本题考点】 1、考察逻辑分析能力即如何将复杂问题拆解成容易解决的一个个子问题的能力 2、考察排序窗口函数的灵活使用。在需要进行分组排序时排序窗口函数往往是首选 3、考察 case when 语句的灵活应用以及分组汇总时group by 子句、聚合函数的搭配使用 4、考察纵向联结和横向联结的使用。纵向联结使用 union 方法union、union all横向联结使用 join 方法left join、innerjoin、right join 5、考察多重子查询的应用以及 with…as 语句的应用。  ⬇️点击「阅读原文」  免费报名 数据分析训练营
http://www.hkea.cn/news/14327900/

相关文章:

  • 化妆品品牌网站建设电商建站工具
  • 滕王阁环境建设网站响应式网页制作
  • asp.net空网站公关公司都有哪些职位
  • 深圳网络专科网站建设程序员 wordpress主题
  • 个人网站内容有哪些内容网站的设计方案
  • 做外贸用什么视频网站好不用wordpress 知乎
  • 赣州热门网站怎样做自己公司的网站
  • 衡水网站托管正邦品牌设计
  • 北京 工业网站建设公司价格seo搜索引擎优化简历
  • 电子商务毕业设计网站网页怎么做网站地图
  • 网站标签怎么改网页设计与制作教程电商
  • 临沂网站公司哪家好网络架构和管理
  • 前端网站开发工具建设发展集团有限公司
  • asp.net个人网站怎么做网站用ps做还是ai
  • 东莞建设网站企业网站建设系统平台
  • 做设计最好的参考网站wordpress 删除自带主题
  • 建设项目 环评申报网站爱辉网站建设
  • 免费行情网站app下载大全湖州企业做网站
  • 2345浏览器网站进入物联网工程就业前景
  • 阳谷网站建设价格百度网盘登录入口网页版
  • 百度怎样收录到网站移动互联网应用开发
  • 北京多语言网站建设wordpress远程图片本地化
  • 怎样投网站广告跨境电商是怎么赚钱的
  • 专门设计的网站徐州飞虹网架公司
  • 转化率的网站设计如何制作一款小程序
  • 引流网站建设教程修改wordpress入口地址
  • 您与此网站之间建立的连接不安全广告设计培训班有用吗
  • 珠海网站建设杰作科技网站流量是什么
  • 网站的关键词排名wordpress写文章教程
  • 万网域名注册后怎么样做网站移动公司需要网络工程专业