表结构: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

1)建表语句

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

2)求出每个学科平均成绩

select uid,subject_id,score,avg(score) over (distribute by subject_id) avg_score
from score
group by uid, subject_id, score;

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

with a as (select uid,subject_id,score,avg(score) over (distribute by subject_id) avg_scorefrom scoregroup by uid, subject_id, score
)
select uid,if(score > avg_score, 0, 1) flag
from a;

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

with a as (select uid,subject_id,score,avg(score) over (distribute by subject_id) avg_scorefrom scoregroup by uid, subject_id, score
),b as (select uid,if(score > avg_score, 0, 1) flagfrom a)
select uid
from b
group by uid
having sum(b.flag) = 0;

换种写法 如下,结果是一样的

select uid
from (select uid,if(score > avg_score, 0, 1) flagfrom (select uid,score,avg(score) over (partition by subject_id) avg_scorefrom score) t1) t2
group by uid
having sum(flag) = 0;

运行结果如下

+----+
|uid |
+----+
|1001|
+----+

Hive找出所有科目成绩都大于某一学科平均成绩的学生相关推荐

  1. 使用一个SQL查询出每门课程的成绩都大于80分的学生姓名

    使用一个SQL查询出每门课程的成绩都大于80分的学生姓名 表名为student,字段和数据如下用一条SQL语句查询出student表中每门功课都大于80分的学生姓名. name kecheng fen ...

  2. 用一条SQL语句查询出每门课程的成绩都大于80的学生姓名

    -- 用一条SQL语句查询出每门课程的成绩都大于80的学生姓名.Student表如下: -- name course score -- 张三 语文 81 -- 张三 数学 75 -- 李四 语文 76 ...

  3. 洪君:查出“张”姓学生中平均成绩大于75分的学生信息查询出每门课程的成绩都大于80的学生

    查询出"张"姓学生中平均成绩大于75分的学生信息 表名:student_score  name course score  张青 语文 72  王华 数学 72  张华 英语 81 ...

  4. 查询所有科目成绩都大于90分的学生姓名

    查询所有课程成绩都大于90分的学生: CREATE TABLE `student` (`id` int(11) NOT NULL AUTO_INCREMENT,`stu_name` varchar(2 ...

  5. mysql查询成绩大于89分_查询每门课程成绩都大于80分学生的姓名

    转载的sql语句 .1 查询每门课程成绩都大于80分学生的学号 数据库 表 student name score course A 85  语文 A 75  数学 A 82  英语 B   75  语 ...

  6. 案例:用一条 SQL 语句查询出每门课都大于 80 分的学生姓名

    用一条sql语句查询出每门课都大于80分的学生姓名 首先需要进行分析: 要查询出每门课程都大于80分的学生姓名,因为一个学生有多门课程,所以会出现下面三种情况. 第一可能所有课程都大于80分. 第二可 ...

  7. select每门可说大于90分_用一条sql语句查询出“每门”课程都大于80分的学生姓名...

    展开全部 首先需要进行分析: 要查询出每门课程都大于80分的学生姓名,因为一个学生有多门课程,所以会出62616964757a686964616fe78988e69d8331333366306534现 ...

  8. 用一条SQL语句查询出每门课都大于80分的学生姓名

    两道sql题: 1.用一条SQL语句查询出每门课都大于80分的学生姓名. 2.删除除了自动编号不同,其他都相同的学生冗余信息. 第一题数据如下: 分析:每门课都大于80分,就是说学生最低分数要大于80 ...

  9. [关于SQL]查询成绩都大于80分的学生

    1.用一条SQL语句 查询出每门课都大于80分的学生姓名 name kecheng fenshu 张三 语文 81 张三 数学 75 李四 语文 76 李四 数学 90 王五 语文 81 王五 数学 ...

最新文章

  1. 高校老师暑假狂补AI课背后:AI人才培养竞赛开跑
  2. java comparable Comparator 区别
  3. java怎么构造map_Java中Map结构
  4. 关于有限自动机的一篇不错的文章
  5. 解决h5py\_init_.py:26:FutureWarning: Conversion of the second argument of issubdtype from `float`^……
  6. C#委托的定义 以及使用方式详解,更简单的理解委托。
  7. c#语言中读取txt文件,简单的c#文本文件读写-.NET教程,C#语言
  8. DNS中的七大资源记录介绍
  9. SAP Data Intelligence API返回错误消息 - Fordidden cross-site request
  10. php代码审计是什么意思,php代码审计基础篇
  11. 用dockers实现mysql主从同步
  12. Tomcat发布项目时,更改浏览器地址栏图标
  13. Linux下mongodb用户管理和设置远程登陆
  14. 联想年报有看头:供应链展现韧性,PC迎来新机遇
  15. 计算机访问周期,访问周期最短的存储器是
  16. 《阿里云服务器教程1》:如何购买阿里云服务器
  17. HTML5 canvas 拖尾效果(或尾巴 或方向标 或留痕。。。)
  18. html图片标签img的介绍以及基本用法详解
  19. 分享抖音账号初期运营技巧,直接可复制的运营流程
  20. 一步一步学Silverlight 2系列(21):如何在Silverlight中调用JavaScriptjavascript

热门文章

  1. Android日志工具Log的使用
  2. 双亲委派模型【理解】
  3. spring学习笔记--IOC接口
  4. python圆柱体积代码_python实现Bencode解码方法
  5. python动态人脸识别_python3.8动态人脸识别
  6. qgraphicsview鼠标移动图片_交互式QGraphicsView(平移/缩放/旋转)-阿里云开发者社区...
  7. xugu clob字段如何导出_如何优雅的导出EXCEL
  8. MYSQL数学函数哪些事
  9. centos 指定文件路径 脚本_centos自动删除三天前文件的脚本和自动进入指定目录运行命令...
  10. 纯命令行linux环境,Ubuntu Server纯命令行环境安装 Dropbox