1.求:找出所有科目成绩都大于某一学科平均成绩的学生

uid  subject_id score
1001 01 90
1001 02 90
1001 03 90
1002 01 85
1002 02 85
1002 03 70
1003 01 70
1003 02 70
1003 03 85

先创建表

create table score(uid string,subject_id string,score int)
row format delimited fields terminated by '\t'; 

1.1 求出每个学科平均成绩

selectuid,score,avg(score) over(partition by subject_id) avg_score
fromscore;t1

1.2 根据是否大于平均成绩记录flag,大于则记为0,否则记为1

selectuid,if(score>avg_score,0,1) flag
fromt1;t2

1.3 根据学生的id进行分组统计flag的和,和为0则是所有学科都大于平均成绩

selectuid
fromt2
group byuid
havingsum(flag)=0;

1.4 最终sql

selectuid
from(selectuid,if(score>avg_score,0,1) flag
from(selectuid,score,avg(score) over(partition by subject_id) avg_score
fromscore)t1)t2
group byuid
havingsum(flag)=0;

2. 要求使用SQL统计出每个用户的累积访问次数

数据:

用户id(userId) 月份(visitDate) 计数(visitCount)
u01 2020-10-28 5
u02 2020-9-27 6
u03   2020-10-16 8
u04 2020-10-13 3
u01 2020-10-24 6
u01 2020-10-09 8
u02 2020-10-25 6
u01 2020-9-18 4

创建表

create table visit
(userId string,
visitDate string,
visitCount int)
row format delimited fields terminated by "\t";

2.1 计算每人单月访问量

selectuserId,visitDate,sum(visitCount) mn_count
fromvisit
group byuserId,visitDate;t1

2.2 按月累计访问量

selectuserId,visitDate,mn_count,sum(mn_count) over(partition by userId order by visitDate)
from t1;

2.3 最终sql

selectuserId,visitDate,mn_count,sum(mn_count) over(partition by userId order by visitDate)
from(selectuserId,visitDate,sum(visitCount) mn_count
from visit
group by userId,visitDate)t1;

sql面试题——手写sql练习案例(一)相关推荐

  1. 手写sql语句面试题

    手写sql语句面试题 一.数据表 二.简单查询 1.查询姓名中带"猴"的学生名单 三.汇总分析 1.查询选了课程的学生人数 2.查询各科成绩最高和最低的分, 以如下的形式显示:课程 ...

  2. 精读《手写 SQL 编译器 - 错误提示》

    1 引言 编译器除了生成语法树之外,还要在输入出现错误时给出恰当的提示. 比如当用户输入 select (name,这是个未完成的 SQL 语句,我们的目标是提示出这个语句未完成,并给出后续的建议: ...

  3. 精读《手写 SQL 编译器 - 文法介绍》

    1 引言 文法用来描述语言的语法规则,所以不仅可以用在编程语言上,也可用在汉语.英语上. 2 精读 我们将一块语法规则称为 产生式,使用 "Left → Right" 表示任意产生 ...

  4. 精读《手写 SQL 编译器 - 回溯》

    摘要: 1 引言 上回 精读<手写 SQL 编译器 - 语法分析> 说到了如何利用 Js 函数实现语法分析时,留下了一个回溯问题,也就是存档.读档问题. 我们把语法分析树当作一个迷宫,有直 ...

  5. 精读《手写 SQL 编译器 - 性能优化之缓存》

    1 引言 重回 "手写 SQL 编辑器" 系列.这次介绍如何利用缓存优化编译器执行性能. 可以利用 Frist 集 与 Match 节点缓存 这两种方式优化. 本文会用到一些图做解 ...

  6. 用了MybatisPlus后,我很久没有手写sql了

    (一)前言 最早写JDBC的时候,要手动配连接信息,要一条条手写sql语句.后来Mybatis出现了,不需要再手动配置连接信息,sql语句也和代码隔离开来,但是还免不了写Sql.接着出现了Mybati ...

  7. 71.精读《手写 SQL 编译器 - 错误提示》

    1 引言 编译器除了生成语法树之外,还要在输入出现错误时给出恰当的提示. 比如当用户输入 select (name,这是个未完成的 SQL 语句,我们的目标是提示出这个语句未完成,并给出后续的建议:  ...

  8. 大数据高频面试题——手写HQL

    目录 8.3 手写HQL 8.3.1 手写HQL 第1题 8.3.2 手写HQL 第2题 8.3.3 手写HQL 第3题 8.3.4 手写HQL 第4题 8.3.5 手写HQL 第5题 8.3.6 手 ...

  9. python手写代码面试_常见Python面试题—手写代码系列

    原标题:常见Python面试题-手写代码系列 1.如何反向迭代一个序列 #如果是一个list,最快的方法使用reverse tempList = [1,2,3,4] tempList.reverse( ...

最新文章

  1. Java反编译的代码可以修改么
  2. 神经网络与中心场近似
  3. jasp报错_JSP报错!成功解决问题200+追加分数!
  4. 人人都是 DBA(X)资源信息收集脚本汇编
  5. 04,认证、权限、频率
  6. 【转】ubuntu 开机sudo启动应用程序
  7. treeTable v 1.4.2
  8. 自动弹出的html,360浏览器自动弹出网页怎么解决?
  9. Memory testing 10----Fuctional RAM Modle------Recovery Fault (RF)
  10. 微信公众号开发使用测试号不能测试支付接口的解决方案
  11. Nelder Mead SIMPLEX Algorithm
  12. 学历和专业对程序员找工作很重要吗?
  13. 感觉CNZZ不行了,同一个站点,IP比百度、51LA少2万!
  14. 如何用python画函数曲线_python 画函数曲线示例 用python 怎么画函数图像
  15. 【c++】1817城堡问题题解
  16. oracle自学入门教程,Oracle学习快速入门基础教程
  17. 在OpenCV中,将鱼眼模型(Fisheye camera model)改写为普通相机模型
  18. HDU4507 不要整数中 某一位是7 每一位加起来的和是7的整数倍 或是7的整数倍
  19. ObjectARX下载ObjectARX Wizards
  20. 如果让你做技术负责人,你会怎么设计后端架构?

热门文章

  1. 智能窗帘控制(光、红外、时间)
  2. 1.TCL/TK脚本学习——入门基础
  3. 西南科技大学计算机专业全国排名,西南科技大学为什么在全国大学排名很低?...
  4. 网校系统开发如何做才能保证系统稳定发展
  5. 显卡不装驱动也能使用的原因
  6. 文件类型识别----魔数
  7. 国夜景最美丽的十大城市
  8. 湖南大学头歌期中模拟试卷
  9. Android系统快速编译方式ninja
  10. 苹果8的爆料这么多?为什么...