现在有一个面试题

场景举例

北京市学生成绩分析

成绩的数据格式

exercise5_1.txt 文件中的每一行就是一个学生的成绩信息。字段之间的分隔符是","

时间,学校,年纪,姓名,科目,成绩

样例数据

2013,北大,1,黄渤,语文,97
2013,北大,1,徐峥,语文,52
2013,北大,1,刘德华,语文,85
2012,清华,0,马云,英语,61
2015,北理工,3,李彦宏,物理,81
2016,北科,4,马化腾,化学,92
2014,北航,2,刘强东,数学,70
2012,清华,0,刘诗诗,英语,59
2014,北航,2,刘亦菲,数学,49
2014,北航,2,刘嘉玲,数学,77

建表导数据

create database if not exists exercise;
use exercise;
drop table if exists exercise5_1;
create table exercise5_1(year int, school string, grade int, name string, course string, score int) row format delimited fields terminated by ',';
load data local inpath "/home/hadoop/exercise5_1.txt" into table exercise5_1;
select * from exercise5_1;
desc exercise5_1;

需求

1、分组TopN,选出今年每个学校、每个年级、分数前三的科目

select t.*
from
(select school, grade, course, score,
row_number() over (partition by school, grade, course order by score desc) rank_code
from exercise5_1
where year = "2017"
) t
where t.rank_code <= 3;

详解如下:
  row_number函数:row_number() 按指定的列进行分组生成行序列,从 1 开始,如果两行记录的分组列相同,则行序列 +1。
  over 函数:是一个窗口函数。
  over (order by score) 按照 score 排序进行累计,order by 是个默认的开窗函数。
  over (partition by grade) 按照班级分区。
  over (partition by grade order by score) 按照班级分区,并按着分数排序。
  over (order by score range between 2 preceding and 2 following) 窗口范围为当前行的数据幅度减2加2后的范围内的数据求和。

2、今年,北航,每个班级,每科的分数,及分数上下浮动2分的总和

select school, grade, course, score,
sum(score) over (order by score range between 2 preceding and 2 following) sscore
from exercise5_1
where year = "2017" and school="北航";

3、where与having:今年,清华1年级,总成绩大于200分的学生以及学生数

select school, grade, name, sum(score) as total_score,
count(1) over (partition by school, grade) nct
from exercise5_1
where year = "2017" and school="清华" and grade = 1
group by school, grade, name
having total_score > 200;

having 是分组(group by)后的筛选条件,分组后的数据组内再筛选,也就是说 HAVING 子句可以让我们筛选成组后的各组数据。
where 则是在分组,聚合前先筛选记录。也就是说作用在 GROUP BY 子句和 HAVING 子句前。

Hive--笔试题05_1--求TopN相关推荐

  1. 【ForOffer】【深信服--测试开发岗笔试题】求最少车费求最低位找马甲找字符串子串

    深信服的整体笔试题难度一般,有多刷题的经验,能立马找出了题意理解,在此,自己只是做个总结发出,有更好的解法的童靴可以一起交流,其实这四道题都是常见题型的一种变形.代码照着搬都是没有问题的哦! 第一题: ...

  2. 【笔试题】求最小公倍数 C++(两种方法)

    题目 本题链接:求最小公倍数 正整数A和正整数B 的最小公倍数是指能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数. 输入描述: 输出描述: 示例1: 解题思路一: 暴力破解 从 ...

  3. 一道简单的电商数据分析笔试题:求组合商品的库存量

    转自公众号可以叫我才哥 今天在粉丝交流群里有群友询问了一个已知每个货品的库存,求组合商品(就是多个货品捆绑组合成一个组合商品)的库存量.逻辑上讲,应该是组合商品里货品库存最低的那个货品存量决定整个组合 ...

  4. 一道经典SQL笔试题(求各部门最高薪水的部门名称、员工姓名以及薪水)

    我前两天写了一篇标题一样的博客,有道友评论说我的写法有问题,当时脑子一蒙就被带偏了,以为自己写错了,就把原来的删除了,结果下来验证了一下自己的写法还是没有问题,所以这次补上. 题是这样的: 有两个表, ...

  5. 一道笔试题(求质数乘积)

    前今天参加了场笔试里面有一道关于求质数乘积的题,当时虽说写完了程序但是总感觉有什么不对的地方所以今天写了一下,发现当时求质数的函数写的有些复杂,还是基础太差再加上长时间不写代码所致,由于我参加的笔试公 ...

  6. 2015小米实习生笔试题1 求两个数的不同位的个数

    int func(int x, int y) {int z = x ^ y; //两个数的不同位都会在z的二进制位以1表示int count = 0;while(z) //求z的二进制位1的个数{co ...

  7. 2014-百度 阿里 华为笔试题

    8月15日,百度2道面试题: 1.来自<编程之美>的概率题:一个桶里面有白球.黑球各100个,现在按下述规则取球:的     i .每次从通里面拿出来两个球:     ii.如果取出的是两 ...

  8. 最新百度 阿里 华为 腾讯 谷歌面试笔试题及解析

    最新百度 阿里 华为 腾讯 谷歌面试笔试题及解析 8月15日,百度2道面试题: 1.来自<编程之美>的概率题:一个桶里面有白球.黑球各100个,现在按下述规则取球:的 i .每次从通里面拿 ...

  9. 百度 阿里 华为 腾讯 谷歌面试笔试题及解析

    8月15日,百度2道面试题: 1.来自<编程之美>的概率题:一个桶里面有白球.黑球各100个,现在按下述规则取球:的     i .每次从通里面拿出来两个球:     ii.如果取出的是两 ...

  10. 【转】2014百度 阿里 华为 腾讯 谷歌面试笔试题及解析

    原文: http://www.cnblogs.com/JuneWang/p/3773880.html 已知memcpy的函数为: void* memcpy(void *dest , const voi ...

最新文章

  1. AI泡沫之上,创业公司的护城河和边界扩张
  2. python控制单片机keil_PCF8591使用及Python控制
  3. Simulink代码生成: 延时模块及其代码
  4. Java遍历指定文件夹,在屏幕打印所有以abc结尾的文件
  5. ASP用DSN连接数sql数据库
  6. Java中的全局变量和局部变量——简单区别
  7. 04_Flink-HA高可用、Standalone集群模式、Flink-Standalone集群重要参数详解、集群节点重启及扩容、启动组件、Flink on Yarn、启动命令等
  8. 在Swing和Swt中使用JavaFX
  9. is exists可以传数组查询吗_C++中数组类型的操作
  10. 发现同构:Gartner曲线、达克效应 与 跨越鸿沟
  11. ISSCC 2017论文导读 Session 14 Deep Learning Processors,A 2.9TOPS/W Deep Convolutional Neural Network
  12. html背景图片被白色覆盖,html – CSS背景图片淡出白色
  13. 大秦帝国部:黑色裂变(上卷)读后感
  14. BZOJ2668:[CQOI2012]交换棋子——题解
  15. Android系统安全 — 3.1-展锐平台secureboot安全启动流程和使用
  16. ssm物业报修管理系统的设计与实现毕业设计源码111024
  17. python和c语言哪个更难学深_c语言和python先学哪个比较简单
  18. DCDC开关电源电磁兼容(二)什么是LISN(有内部电路详细解释)
  19. GPS时钟的详细说明
  20. 全自动软化水设备:25t/h全自动流量型软化水设备特点

热门文章

  1. 暨大与深大计算机专业比较,暨南大学的计算机专业怎么样?
  2. 计算机网络(3)体系结构:计算机网络的分类
  3. 嵌入式核心板在麻醉系统中的应用
  4. iOS开发之获取运营商和WIFI
  5. win10启动修复无法修复此计算机,Win10开机出现无法自动修复你的电脑未正确启动的解决方法...
  6. 曾经由盛转衰的骈文,却引领后人在文质兼美的创作之路上坚定前行
  7. 一、HALCON学习笔记(容器液位缺陷检测)
  8. 迅达cadi_迅达电梯700p图纸英文代码翻译
  9. c语言文本相似度分析系统,某课程设计---文件相似度判断
  10. Vue用etable实现甘特图