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

大数据笔试题_第一阶段配套笔试题03

--学生表
Create.table.student
(
……std_id.string.comment‘学号’
……,name …string.comment‘姓名’
……,sex…string.comment‘性别’
);
--课程表
Create.table.course
(
……course_id..string.comment‘课程 ID’
……,name ……string.comment‘课程名称’
);
--课程成绩表
Create.table.course_score
(
……course_id..string.comment‘课程 ID’
……,std_id.string.comment‘学号’
……,score……double.comment.‘分数’
)

题目:

(1) 没有选修生物课的同学:学号,姓名,性别;

SELECT t.*
  FROM student t
  LEFT JOIN (SELECT s.std_id
               FROM score s
               JOIN course c
                 ON s.course_id = c.course_id
              WHERE c.name = '生物') b
    ON t.std_id = b.std_id
 WHERE b.std_id IS NULL;


(2) 求选修了两门课及以上且成绩不低于 80 分的同学:学号;

select s.学号
  from score s
 WHERE s.分数 >= 80
 group BY s.学号
having count(1) >= 2;

(3) 求每门课程的前三名学生信息:学号,姓名,课程名称,成绩;

WITH t1 AS
 (select s.*,
         row_number() over(PARTITION BY s.course_id order by s.score DESC) rn
    from score s),
t2 AS
 (SELECT t1.* FROM t1 WHERE rn <= 3)

SELECT t2.std_id, t.name, c.name, t2.score
  FROM t2
  join student t
    on t.std_id = s.std_id
  join course c
    on c.course_id = t2.course_id;

(4) 统计每个学生选修的所有课程及成绩:学号,姓名,性别,课程成绩集合【语文-90,
数据-60,英语-80】

select t.std_id,
       t.name,
       t.sex,
       wm_concat(c.name || '-' || s.score) 课程成绩集合
  from student t
  join score s
    on t.std_id = s.std_id
  JOIN course c
    on c.course_id = s.course_id
 GROUP BY t.std_id, t.name, t.sex;

二.表信息

--登录日志表
Create.table.login_log
(
……uid………string.comment.‘用户 ID’
……login_date.string.comment.’登录日期 yyyy-mm-dd’
);

题目:求从 2021 年开始,连续登录过 7 天以上的用户 id

-方法一
WITH t1 as
 (select l.uid,
         l.login_date - row_number() over(PARTITION BY UID order by l.login_date) cz
    from login_log l
   where SUBSTR(l.login_date, 1, 4) >= '2021')
SELECT UID FROM t1 GROUP BY UID, cz HAVING COUNT (1) >= 8;

--方法二
WITH t1 AS
 (select l.uid
         --,l.login_date-row_number()over(PARTITION BY UID order by l.login_date) cz
          LEAD(login_date, 7) OVER(PARTITION BY UID order by l.login_date) l_dt
    from login_log l)
SELECT uid FROM t1 WHERE l_dt - login_date = 7;

相关文章:

  • 滑动窗口思想 面试算法高频题
  • 双引擎驱动:智能知识库 + AI 陪练重构售后服务管理体系
  • 【一篇搞定配置】一篇带你从配置到使用(PyCharm远程)完成服务器运行项目(配置、使用一条龙)【全网最详细版】
  • 算法-尼姆博弈
  • 【【分享开发笔记,赚取电动螺丝刀】参考 RT-thread 的方式管理初始化函数调用】
  • 【Linux】iptables防火墙基本概念
  • 数据库系统概论|第三章:关系数据库标准语言SQL—课程笔记2
  • 网络安全应急响应-文件痕迹排查
  • Nginx 反向代理:从入门到精通
  • 硬盘分区格式方案之 MBR(Master Boot Record)主引导记录的 主分区 和 扩展分区 笔记250407
  • KWDB 创作者计划—人工智能赋能工业制造:智能制造的未来之路
  • M1使用docker制作镜像xxl-job,供自己使用
  • IntelliJ IDEA下开发FPGA——FPGA开发体验提升__上
  • springboot 项目怎样开启https服务
  • 当实体类中的属性名和表中的字段名不一样 ,怎么办 ?
  • 03_docker 部署 nginx 配置 HTTPS 并转发请求到后端服务
  • WebVTT 教程
  • dfs练习
  • Automattic 裁员16%,Matt Mullenweg称此举旨在提升盈利能力并增强投资实力
  • ZoomCharts使用方法
  • 陶石不语,玉见文明:临平玉架山考古博物馆明日开馆
  • 国际金价下跌,中概股多数上涨,穆迪下调美国主权信用评级
  • 大外交丨3天拿下数万亿美元投资,特朗普在中东做经济“加法”和政治“减法”
  • 湖南慈利一村干部用AI生成通知并擅自发布,乡纪委立案
  • 中国物流集团等10家央企11名领导人员职务任免
  • 收到延期付款利息,该缴纳增值税吗?