笔试题之编写SQL按要求查询用户阅读行为数据

news2024/11/17 11:50:46

紧张源于恐惧,恐惧源于未知。

文章目录

  • 前言
  • 一、SQL题目
  • 二、当时作答结果
  • 三、复盘
    • (一)建表并自定义插入数据
    • (二)正确解答
    • (三)答错原因分析
  • 总结


前言

分享本人一次失败的笔试经历,供各位小伙伴参考。


一、SQL题目

表user_read, 记录有访问用户每天的行为(有一个行为表里就会产生一行数据)。有以下几列:
dateStr: 日期(天)
uin: 用户ID
docId: 用户的阅读的内容ID
readTime: 每一篇内容对应的阅读时长(s)

第一题:20210820当天有来的且下一天又来的用户
第二题:20210820当天阅读时长大于平均阅读时长人群的次日留存
第三题:20210820-20210822 每天阅读时间最长的用户以及对应的时长 (用窗口函数)

二、当时作答结果

-- 第一题
SELECT
    uin
FROM tb1
WHERE dateStr = '20210821'
AND uin IN
(
    SELECT
        uin
    FROM tb1
    WHERE dateStr = '20210820'
    GROUP BY uin
)
GROUP BY uin;

-- 第二题
SELECT
    t4.uin / t3.uin
FROM
(
    SELECT
        t1.uin
    FROM
    (
        SELECT
            uin
           ,readTime
        FROM tb1
        WHERE dateStr = '20210820'
    ) t1
    LEFT OUTER JOIN
    (
        SELECT
    	    AVG(readTime) AS avg_readTime
    	FROM tb1
    	WHERE dateStr = '20210820'
    ) t2
    ON 1 = 1
    WHERE t1.readTime > t2.avg_readTime
    GROUP BY t1.uin
) t3
LEFT OUTER JOIN
(
    SELECT
        uin
    FROM tb1
    WHERE dateStr = '20210821'
    GROUP BY uin
) t4
ON t3.uin = t4.uin;

-- 第三题
SELECT
    t1.dateStr
   ,t1.uin
   ,t1.readTime
   ,ROW_NUMBER OVER(PARTITION BY t1.dateStr ORDER BY readTime DESC) rn
FROM
(
    SELECT
	    dateStr
	   ,uin
	   ,SUM(readTime) AS readTime
	FROM tb1
	WHERE (dateStr >= '20210820' AND dateStr <= '20210822')
	GROUP BY
	    dateStr
	   ,uin
) t1
WHERE rn = 1;

三、复盘

(一)建表并自定义插入数据

create table user_read
(
dateStr varchar(10)
,uin    varchar(10)
,docId  varchar(10)
,readTime  int
);

insert into user_read values
('20210820','1','001',50),
('20210820','1','002',5),
('20210821','1','001',20),
('20210822','1','003',30),
('20210820','2','001',35),
('20210821','2','001',50),
('20210822','2','006',66),
('20210820','3','002',52),
('20210820','3','002',58),
('20210820','3','002',31);

在这里插入图片描述

(二)正确解答

-- 第一题
SELECT
    uin
FROM user_read
WHERE dateStr = '20210821'
AND uin IN
(
    SELECT
        uin
    FROM user_read
    WHERE dateStr = '20210820'
    GROUP BY uin
)
GROUP BY uin
;

在这里插入图片描述

-- 第二题
WITH lt_avg AS
(
    SELECT
        t1.uin
    FROM
    (
        SELECT
            uin
           ,SUM(readTime) AS readTime
        FROM user_read
        WHERE dateStr = '20210820'
        GROUP BY uin
    ) t1
    INNER JOIN
    (
        SELECT
            AVG(readTime) AS avg_readTime
        FROM user_read
        WHERE dateStr = '20210820'
    ) t2
    ON t1.readTime > t2.avg_readTime
)
SELECT
    COUNT(t2.uin) / COUNT(t1.uin) AS nd_retention
FROM
(
    SELECT
	    uin
	FROM lt_avg
) t1
LEFT OUTER JOIN
(
	SELECT
        uin
    FROM user_read
    WHERE dateStr = '20210821'
    AND uin IN
    (
        SELECT
    	    uin
    	FROM lt_avg
    )
	GROUP BY uin
) t2
ON t1.uin = t2.uin
;

在这里插入图片描述

-- 第三题
SELECT
    t1.dateStr
   ,t1.uin
   ,t1.readTime
FROM
(
    SELECT
	    dateStr
	   ,uin
	   ,SUM(readTime) AS readTime
	   ,ROW_NUMBER() OVER(PARTITION BY dateStr ORDER BY SUM(readTime) DESC) AS rn
	FROM user_read
	WHERE (dateStr >= '20210820' AND dateStr <= '20210822')
	GROUP BY
	    dateStr
	   ,uin
) t1
WHERE rn = 1
;

在这里插入图片描述

(三)答错原因分析

原因:

  1. SQL不熟练,斋写SQL没跑不知道对错;
  2. 线上共享屏幕做题的形式没有接触过,有些紧张;
  3. 平时主要接触制造业的数据,用户行为数据不熟悉,造成紧张;
  4. 太紧张导致没有看清楚题目。

解决方案:

  1. 刷SQL题;
  2. 熟悉斋写SQL的方式;
  3. 面试前根据岗位了解相关业务。

总结

紧张源于恐惧,恐惧源于未知。本人复盘笔试时发现自己三道题有两道题做错,很不应该。面试为线上面试的形式,面试官突然发笔试题要求共享屏幕做题,因没有数据斋写SQL,加上对业务过程不熟悉,全程很紧张,题目都看错。归根结底还是因为自己第一次参加这样的笔试形式,SQL知识也不熟练造成。各位小伙伴要多多练习,吸取教训。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/73016.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

plink中的BGEN格式的数据如何用

这里&#xff0c;介绍一下BGEN格式的数据&#xff0c;他的文件格式是这样的&#xff1a;a.bgen&#xff0c;这是一个新的数据格式&#xff0c;目前应用不如plink的二进制文件&#xff1a;.bim,.bed,.fam。这里介绍一下如何相互转换。 1. bgen格式介绍 现代遗传关联研究通常使…

[附源码]计算机毕业设计JAVA中小企业人事管理系统

[附源码]计算机毕业设计JAVA中小企业人事管理系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM my…

HMS Core 6.8.0版本发布公告

分析服务 ◆ 游戏行业新增“区服分析”埋点模板及分析报告&#xff0c;支持开发者分服务器查看用户付费、留存等指标&#xff0c;可进一步评估不同服务器的玩家质量&#xff1b; ◆ 新增营销活动报告&#xff0c;可查看广告任务带来的曝光、点击相关信息&#xff0c;让营销推…

阿里P7晒工资条,看完真的扎心了……

前几天&#xff0c;有位老粉私信我&#xff0c;说看到某95后学弟晒出阿里P7的工资单&#xff0c;他是真酸了…想狠补下技术&#xff0c;努力冲一把大厂。 为了帮到他&#xff0c;也为了大家能在最短的时间内做面试复习&#xff0c;我把软件测试面试系列都汇总在这一篇文章了。…

关于信息系统监理师考试怎么备考?

信息系统监理师是属于软考的中级科目&#xff0c;是水平考试&#xff0c;取得证书后就具备了任职中级职称的资格&#xff0c;并可以注册为信息系统监理师&#xff0c;进行信息系统监理工程师的执业工作。 注册监理工程师&#xff0c;是指经考试取得中华人民共和国监理工程师资…

041-推箱子游戏1

上一讲:040-JAVA集合及GUI综合应用(实现简单的订单管理系统)_CSDN专家-赖老师(软件之家)的博客-CSDN博客 下一讲:推箱子游戏源代码 摘要: 1、使用JAVA基础知识 2、GUI界面编程实现推箱子界面,常用控件的综合应用; 3、使用JAVA绘图技术实现推箱子过程的绘图功能;…

追觅身陷「多事之秋」!一场无法投机的「卡位战」

清洁电器市场正释放着新的商业活力。 GfK数据显示&#xff0c;今年上半年在整体家电市场低迷的同时&#xff0c;清洁机器人市场零售额保持了同比15%的增速&#xff0c;仍然是家电行业的主要增长点。其中&#xff0c;线上市场扫地机器人销售仍然居首位&#xff0c;但洗地机反超…

项目笔记:Arduino读取SD卡

1 硬件连接&#xff08;使用Arduino Uno&#xff09;&#xff1a; CS -> 10 SCK -> 13 MOSI -> 11 MISO -> 12 VCC ->5V GND -> GND 2 让Arduino检测到SD卡 官方测试程序&#xff1a;检测SD卡连接并输出卡型号 /*SD card testThis example shows how use…

Linux 磁盘结构,文件系统与inode

&#x1f9f8;&#x1f9f8;&#x1f9f8;各位大佬大家好&#xff0c;我是猪皮兄弟&#x1f9f8;&#x1f9f8;&#x1f9f8; 文章目录一、关于磁盘①磁盘②CHS寻址⑤磁盘结构的抽象二、文件系统①inode与文件的关系②创建文件&#xff0c;系统做的事③删除文件&#xff0c;系…

如何升级展锐RM500U模组的5GCPE固件

本文镜像&#xff1a;https://blog.csdn.net/weixin_45326556/article/details/128236605 如何升级展锐RM500U模组的5GCPE固件1. 准备工作2. 安装5GCPE串口驱动3. 升级固件3.1 选择固件3.2 选择串口号3.3 下载固件3.4 下载固件意外情况4. 重新启动5.参考文献1. 准备工作 从网盘…

智慧旅游景区Web3D可视化GIS综合运营平台

建设背景 2014年8月&#xff0c;《国务院关于促进旅游业改革发展的若干意见》。 2015年年初&#xff0c;原国家旅游局发布《关于促进智慧旅游发展的指导意见》。 2021年12月&#xff0c;国务院印发《“十四五”旅游业发展规划》。 在国家和有关部门的引导和支持下&#xff…

卡塔尔世界杯-诸神黄昏

世界杯 世界杯概述:国际足联世界杯&#xff08;FIFA World Cup&#xff09;简称“世界杯”&#xff0c;是世界上最高荣誉、最高规格、最高竞技水平、最高知名度的足球比赛&#xff0c;与奥运会并称为全球体育两大最顶级赛事&#xff0c;影响力和转播覆盖率超过奥运会的全球最大…

openGauss数据库安装(2.0.0企业版安装)

目录1. 准备环境2. 预安装3. 正式安装4. 启动并登录数据前言此次数据库的系统安装环境仍然是openEuler20.03LTS,openGauss安装版本是2.0.0版本&#xff0c;相对于极简版安装&#xff0c;确实多了一些工具&#xff0c;例如gs_om工具&#xff0c;极简版安装是没有的&#xff0c;企…

前后端传参

1、路径传参 前端传一个参数&#xff1a;123 后端接收一个参数&#xff1a;123 // /{}是必须写的&#xff0c;id是自定义的// PathVariable 这个注解也是必须写的&#xff0c;否则接不到参数GetMapping("/{id}")//使用什么类型去接收id的值&#xff0c;要看你后端需要…

损失函数是如何设计出来的

损失函数是如何设计出来的&#xff1f; 可以直接观看b站优质博主的视频&#xff0c;该博主讲的也是非常通透。劝大家直接去看视频&#xff0c;我这只是做一个学习笔记。 https://www.bilibili.com/video/BV1Y64y1Q7hi/?spm_id_from333.788&vd_sourcee13ed5ec556f20f3f3c2…

Medical Image Segmentation Review:The Success of U-Net

目录 医学图像分割综述&#xff1a;UNet的成功 1.摘要与介绍 2.分类 2.1.2D Unet 2.2 3D UNet 3.UNet扩展 3.1对于跳跃连接的增强与改进 3.1.1--增加跳跃连接数量 3.1.2--对跳跃连接过程中的特征进行处理 3.1.3--编码器和解码器特征图的组合 3.2--主干网络的改进与增…

【Lilishop商城】No3-2.模块详细设计,系统设置(系统配置、行政区划、物流公司、滑块验证码图片、敏感词过滤)的详细设计

仅涉及后端&#xff0c;全部目录看顶部专栏&#xff0c;代码、文档、接口路径在&#xff1a; 【Lilishop商城】记录一下B2B2C商城系统学习笔记~_清晨敲代码的博客-CSDN博客 全篇会结合业务介绍重点设计逻辑&#xff0c;其中重点包括接口类、业务类&#xff0c;具体的结合源代码…

【JavaWeb开发-Servlet】day04-学生成绩管理系统-环境搭建与展示页面

1、项目名称&#xff1a;学生成绩管理系统 2、技术要求&#xff1a;Java、Servlet、JSP、HTML5、JavaScript、Css 3、编译环境&#xff1a;JDK1.8、eclipse2022、TomCat9.0 4、基本功能&#xff1a;增、删、改、查、分页、登录、注册 目录 一、创建项目 &#xff08;1&#x…

自动化测试平台(一):前期准备和后端服务搭建

一、前言 本专栏会基于djangoreact&#xff0c;并结合这些年自己构建多个自动化测试平台的经验&#xff0c;从0开始&#xff0c;一步一步教会你实现一个完备的商用级自动化测试平台&#xff0c;真正意义上能够降本增效创造价值的平台。 二、前期准备 安装mysql&#xff0c;版…

用Virtuoso和Abstract完成gds2lef

需要用到的工具有virtuoso和abstract。 数模混合的项目通常需要模拟完成模块设计&#xff0c;把接去数字的pin打上label&#xff08;text&#xff09;&#xff0c;数字的floorplan才能正式开始。 如果只需要简单的数字PR boundary和pin点位置&#xff0c;那么只使用virtuoso就…