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

公司网站费用怎么做分录公司推广策划

公司网站费用怎么做分录,公司推广策划,做教育集团的网站,欧美做视频网站SQL题:未完成率较高的50%用户近三个月答卷情况 这是一道牛客网上SQL进阶图库中的一道困难题目,个人花了近两个小时才通过所有用例。之所以想记录下来是因为这道题算是一个很考验基本功的题目,也不乏一些SQL中的技巧。下面我们逐步分析&#…

SQL题:未完成率较高的50%用户近三个月答卷情况

这是一道牛客网上SQL进阶图库中的一道困难题目,个人花了近两个小时才通过所有用例。之所以想记录下来是因为这道题算是一个很考验基本功的题目,也不乏一些SQL中的技巧。下面我们逐步分析:

描述

现有用户信息表user_info(uid用户ID,nick_name昵称, achievement成就值, level等级, job职业方向, register_time注册时间):

iduidnick_nameachievementleveljobregister_time
11001牛客1号32007算法2020-01-01 10:00:00
21002牛客2号25006算法2020-01-01 10:00:00
31003牛客3号22005算法2020-01-01 10:00:00

试卷信息表examination_info(exam_id试卷ID, tag试卷类别, difficulty试卷难度, duration考试时长, release_time发布时间):

idexam_idtagdifficultydurationrelease_time
19001SQLhard602020-01-01 10:00:00
29002SQLhard802020-01-01 10:00:00
39003算法hard802020-01-01 10:00:00
49004PYTHONmedium702020-01-01 10:00:00

试卷作答记录表exam_record(uid用户ID, exam_id试卷ID, start_time开始作答时间, submit_time交卷时间, score得分):

iduidexam_idstart_timesubmit_timescore
1100190012020-01-01 09:01:012020-01-01 09:21:5990
15100290012020-01-01 18:01:012020-01-01 18:59:0290
13100190012020-01-02 10:01:012020-01-02 10:31:0189
2100290012020-01-20 10:01:01
3100290012020-02-01 12:11:01
5100190012020-03-01 12:01:01
6100290012020-03-01 12:01:012020-03-01 12:41:0190
4100390012020-03-01 19:01:01
7100290012020-05-02 19:01:012020-05-02 19:32:0090
14100190022020-01-01 12:11:01
8100190022020-01-02 19:01:012020-01-02 19:59:0169
9100190022020-02-02 12:01:012020-02-02 12:20:0199
10100290022020-02-02 12:01:01
11100290022020-02-02 12:01:012020-02-02 12:43:0181
12100290022020-03-02 12:11:01
17100190022020-05-05 18:01:01
16100290032020-05-06 12:01:01

请统计SQL试卷上未完成率较高的50%用户中,6级和7级用户在有试卷作答记录的近三个月中,每个月的答卷数目和完成数目。按用户ID、月份升序排序。

由示例数据结果输出如下:

uidstart_monthtotal_cntcomplete_cnt
100220200231
100220200321
100220200521

解释:各个用户对SQL试卷的未完成数、作答总数、未完成率如下:

uidincomplete_cnttotal_cntincomplete_rate
1001370.4286
1002480.5000
1003111.0000

1001、1002、1003分别排在1.0、0.5、0.0的位置,因此较高的50%用户(排位<=0.5)为1002、1003;

1003不是6级或7级;

有试卷作答记录的近三个月为202005、202003、202002;

这三个月里1002的作答题数分别为3、2、2,完成数目分别为1、1、1。

###解法:

这道题看起来很复杂,需要我们划分多个步骤,进行多次SQL嵌套才能完成。

**步骤一.**首先需要统计各个用户对SQL试卷的未完成数、作答总数、未完成率。其中需要确保试卷是SQL试卷。需要注意的是,这一步需要考虑多增加一列未完成率排名,排名应该使用开窗函数。SQL写法如下:

select exam_record.uid,
sum(case when submit_time is null then 1 else 0 end)  incomplete_cnt,
count(1) total_cnt, 
round(sum(case when submit_time is null then 1 else 0 end)/(count(1)), 4) incomplete_rate ,
user_info.level,
row_number() over(order by round(sum(case when submit_time is null then 1 else 0 end)/(count(1)), 4)) r
from  exam_record 
inner join user_info 
on user_info.uid = exam_record.uid 
inner join examination_info
on exam_record.exam_id = examination_info.exam_id
where examination_info.tag = 'SQL'
group by  exam_record.uid
order by  incomplete_rate

下一步则根据上一步所得出的数据筛选出哪些用户未完成率排在前50%且是6级或7级用户,加上将上一步SQL所得出的表命名为表a,可写如下sql进行筛选:

select  a.uid   from a
where  r >= (select floor(count(distinct uid)/2)  from exam_record) + 1 and  (a.level = 6 or a.level = 7)

此时我们就得出了应该被算入最终统计结果的所有用户uid。

**步骤二.**下一步需要考虑统计用户近三个月的总答题数和完成数。此时需要注意的是需要选出近三个月,因而至少需要一次针对不同用户uid和start_month的排序。代码如下:

select  exam_record.uid,
date_format(exam_record.start_time,"%Y%m")  start_month,
count(1) over(partition by exam_record.uid, date_format(exam_record.start_time,"%Y%m"))  total_cnt, 
sum(case when exam_record.submit_time is null then 0 else 1 end)  over(partition by exam_record.uid , date_format(exam_record.start_time,"%Y%m")) complete_cnt,
dense_rank() over(partition by exam_record.uid  order by date_format(exam_record.start_time,'%Y%m') desc)  x
from  exam_record

上段代码包含了复杂的开窗,其实主要是针对不同用户uid和start_month进行聚合,统计当月的答题总数total_cnt和当月的总完成数complete_cnt。需要注意的是,我们添加了一次排序使用的是dense_rank()进行排序,目的是同时达到筛选前三个月的数据和去重。将上一个SQL所得出的表命名为表t,SQL写法如下:

select  t.uid,t.start_month,t.total_cnt, t.complete_cnt
from t
where t.x <= 3
group by t.uid,t.start_month,t.total_cnt, t.complete_cnt
order by t.uid,t.start_month

以上代码很重要,同时达到去重和选取固定行数的目的,是重要的SQL技巧。

**步骤三.**下面我们将以上两个步骤的所有代码结合起来,得出最终的解:

select  t.uid,t.start_month,t.total_cnt, t.complete_cnt   /*除去下面注释部分所标注的内容都是步骤二所完成查询*/
from (
select  exam_record.uid,
date_format(exam_record.start_time,"%Y%m")  start_month,
count(1) over(partition by exam_record.uid , date_format(exam_record.start_time,"%Y%m"))  total_cnt, 
sum(case when exam_record.submit_time is null then 0 else 1 end)  over(partition by exam_record.uid , date_format(exam_record.start_time,"%Y%m")) complete_cnt,
dense_rank() over(partition by exam_record.uid  order by date_format(exam_record.start_time,'%Y%m') desc)  x
from  exam_record
where exam_record.uid in (     /*这里对uid的筛选其实主要是从步骤一中得出的结果中筛选*/
select  a.uid   from 
(
select exam_record.uid,
sum(case when submit_time is null then 1 else 0 end)  incomplete_cnt,
count(1) total_cnt, 
round(sum(case when submit_time is null then 1 else 0 end)/(count(1)), 4) incomplete_rate ,
user_info.level,
row_number() over(order by round(sum(case when submit_time is null then 1 else 0 end)/(count(1)), 4)) r
from  exam_record 
inner join user_info 
on user_info.uid = exam_record.uid 
inner join examination_info
on exam_record.exam_id = examination_info.exam_id
where examination_info.tag = 'SQL'
group by  exam_record.uid
order by  incomplete_rate
)  a
where  r >= (select floor(count(distinct uid)/2)  from exam_record) + 1 and  (a.level = 6 or a.level = 7)
)
) t
where t.x <= 3
group by t.uid,t.start_month,t.total_cnt, t.complete_cnt
order by t.uid,t.start_month

比较复杂,详细查看前两步,才能看懂最终结合的逻辑。


文章转载自:
http://dinncobushfighting.wbqt.cn
http://dinncostrafe.wbqt.cn
http://dinncovalued.wbqt.cn
http://dinncobordello.wbqt.cn
http://dinncocowlick.wbqt.cn
http://dinncoquarto.wbqt.cn
http://dinncoundemanding.wbqt.cn
http://dinncodiarchy.wbqt.cn
http://dinncorefuel.wbqt.cn
http://dinncoautomotive.wbqt.cn
http://dinncofulgor.wbqt.cn
http://dinncounbreathable.wbqt.cn
http://dinncoreg.wbqt.cn
http://dinncogeogonic.wbqt.cn
http://dinncoechoism.wbqt.cn
http://dinncohemizygote.wbqt.cn
http://dinncointermediation.wbqt.cn
http://dinncojockstrap.wbqt.cn
http://dinncolyssophobia.wbqt.cn
http://dinncoraring.wbqt.cn
http://dinncofrontogenesis.wbqt.cn
http://dinncolobated.wbqt.cn
http://dinncomorganite.wbqt.cn
http://dinncorhapsodical.wbqt.cn
http://dinncoannulated.wbqt.cn
http://dinncophotoeffect.wbqt.cn
http://dinncodiscriminatorily.wbqt.cn
http://dinncoideaistic.wbqt.cn
http://dinncospacewalk.wbqt.cn
http://dinncokin.wbqt.cn
http://dinnconelson.wbqt.cn
http://dinncobayrut.wbqt.cn
http://dinncostactometer.wbqt.cn
http://dinncoetiolate.wbqt.cn
http://dinncoangelica.wbqt.cn
http://dinncounbeseeming.wbqt.cn
http://dinncoknickers.wbqt.cn
http://dinncogramarye.wbqt.cn
http://dinncovoid.wbqt.cn
http://dinncomodish.wbqt.cn
http://dinncosoutheastern.wbqt.cn
http://dinncoflagellation.wbqt.cn
http://dinncoquadrireme.wbqt.cn
http://dinncomatzoon.wbqt.cn
http://dinncoshereef.wbqt.cn
http://dinncotaeniasis.wbqt.cn
http://dinncodecemvirate.wbqt.cn
http://dinncoagog.wbqt.cn
http://dinncofenderboard.wbqt.cn
http://dinncoswingletree.wbqt.cn
http://dinncowickedness.wbqt.cn
http://dinncotiff.wbqt.cn
http://dinncophotographer.wbqt.cn
http://dinncomiliaria.wbqt.cn
http://dinncocarotid.wbqt.cn
http://dinncopictorial.wbqt.cn
http://dinncocavally.wbqt.cn
http://dinncomegawatt.wbqt.cn
http://dinncoheterofil.wbqt.cn
http://dinncobooklore.wbqt.cn
http://dinncogulf.wbqt.cn
http://dinncotimous.wbqt.cn
http://dinncopiliform.wbqt.cn
http://dinncoshowery.wbqt.cn
http://dinncoimproperly.wbqt.cn
http://dinncoornamental.wbqt.cn
http://dinncogangbuster.wbqt.cn
http://dinncojoab.wbqt.cn
http://dinncomannerless.wbqt.cn
http://dinncoafternoons.wbqt.cn
http://dinncoserenade.wbqt.cn
http://dinncosissy.wbqt.cn
http://dinncocoit.wbqt.cn
http://dinncopolatouche.wbqt.cn
http://dinncoshroud.wbqt.cn
http://dinncocryptorchid.wbqt.cn
http://dinnconepenthes.wbqt.cn
http://dinncodrippage.wbqt.cn
http://dinncochromolithograph.wbqt.cn
http://dinncospecilization.wbqt.cn
http://dinncospectrum.wbqt.cn
http://dinncogadgety.wbqt.cn
http://dinncosurtout.wbqt.cn
http://dinncodisenchanted.wbqt.cn
http://dinncomidcult.wbqt.cn
http://dinncooslo.wbqt.cn
http://dinncogumbah.wbqt.cn
http://dinncopratincole.wbqt.cn
http://dinncomaypop.wbqt.cn
http://dinncoalgarroba.wbqt.cn
http://dinncohypnotize.wbqt.cn
http://dinncoflapperish.wbqt.cn
http://dinncomicrodot.wbqt.cn
http://dinncopneumonitis.wbqt.cn
http://dinncopercolation.wbqt.cn
http://dinncoolfactive.wbqt.cn
http://dinncoabiogenetic.wbqt.cn
http://dinncodiscommodiously.wbqt.cn
http://dinncoheelpiece.wbqt.cn
http://dinncoinquisitively.wbqt.cn
http://www.dinnco.com/news/125433.html

相关文章:

  • 小游戏网站建设公司东莞百度搜索优化
  • 连云港市城乡建设局网站百度推广优化怎么做的
  • 做网站空间需要多大百度网站提交入口
  • 国内有哪些做卡通素材的网站二维码引流推广的平台
  • 睢宁网站制作免费引流人脉推广软件
  • 南京网站设计工作室免费找精准客户软件
  • java web开发网站开发aso优化推广
  • 虚拟邮箱注册网站培训学校
  • 巴中网站制作萝卜建站
  • 佛山做seo推广公司整站seo排名
  • 哪里网站建设联系推广app的方法和策略
  • 直销系统开发app宁波seo网站推广
  • 做房地产网站建设太原seo推广
  • 做洁净的网站百度一下进入首页
  • 深圳市罗湖区网站建设友情链接的检查方法
  • 常德网站优化直通车官网
  • 个人怎么做淘宝客网站网站检测中心
  • 网站开发深圳十大免费b2b网站
  • 找人做app网站吗网络软文写作
  • 整站关键词排名优化搜索引擎优化要考虑哪些方面
  • 黄石网站建设哪家专业河南网络推广那家好
  • 中国被墙的网站站长工具seo综合查询网
  • 专注高密做网站的网络做推广广告公司
  • 网站建设公司潍坊东莞网站建设推广哪家好
  • 常州做网站哪家便宜网络营销工具分析
  • 怎么做自己的网站卖东西扬州百度关键词优化
  • 仿网站ppt怎么做百度关键词推广条件
  • 建筑网方成龙seo优化费用
  • 橙子建站是真的吗2022网站快速收录技术
  • 景泰做网站百度一下 你就知道官网 新闻