hive嵌套查询——头歌

任务描述

本关任务:使用嵌套查询语句完成指定操作。

相关知识

为了完成本关任务,你需要掌握:1.如何进行嵌套查询。

嵌套子查询:执行不依赖于外部的查询

嵌套子查询执行顺序先是子查询然后在是主查询。子查询的结果不会被显示,会将其传递给外部查,作为外部查询的条件来输出。

例子:查询所有价格高于平均价格的商品信息。

select * from product where price > (select avg(price) from product);

相关子查询:执行依赖于外部查询。

执行顺序:先是主查询然后在是子查询。

执行过程:

  1. 从主查询中取出一个元组(表中的行),将元组相关的列的值传递给子查询;
  2. 子查询将列的值作为条件得到结果;
  3. 主查询根据子查询得到的结果或者结果集得到满足条件的行,selece 控制显示;
  4. 然后主查询取出下一个元组继续 1-3 步骤,直到所有元组全部处理完毕。

例:取出不同 num 中的最高价格的商品信息 select * from product p where p.price = (select max(price) from product where num=p.num);

案例

 
  1. hive> select * from product;
  2. +----+------+-------+-----+
  3. | id | name | price | num |
  4. +----+------+-------+-----+
  5. | 1 | 伊利 | 68 | 1 |
  6. | 2 | 蒙牛 | 88 | 1 |
  7. | 3 | nike | 888 | 2 |
  8. | 4 | 阿迪 | 688 | 2 |
  9. | 5 | kris | 1888 | 3 |
  10. | 6 | tom | 2888 | 3 |
  11. | 7 | sam | 1688 | 3 |
  12. +----+------+-------+-----+
  13. hive> select * from product where price > (select avg(price) from product);
  14. +----+------+-------+-----+
  15. | id | name | price | num |
  16. +----+------+-------+-----+
  17. | 5 | kris | 1888 | 3 |
  18. | 6 | tom | 2888 | 3 |
  19. | 7 | sam | 1688 | 3 |
  20. +----+------+-------+-----+
  21. hive> select * from product p where p.price = (select max(price) from product where num=p.num);
  22. +----+------+-------+-----+
  23. | id | name | price | num |
  24. +----+------+-------+-----+
  25. | 2 | 蒙牛 | 88 | 1 |
  26. | 3 | nike | 888 | 2 |
  27. | 6 | tom | 2888 | 3 |
  28. +----+------+-------+-----+

编程要求

根据提示,在右侧编辑器补充代码。

平台中有一个表 employee, 建表的语法如下:

 
  1. CREATE TABLE IF NOT EXISTS employee(
  2. Id int,
  3. Name string,
  4. Salary int,
  5. Designation string,
  6. Dept string
  7. )
  8. row format delimited
  9. fields terminated by','
  10. lines terminated by'\n'
  11. stored as textfile;

你需要在右边的代码框中编写 Hive SQL 语句,实现选出每个部门 Dept 的工资 Salary 最高者的全部信息。

测试说明

平台已经建好需要的表,你只需要完善 Hive SQL 语句,平台会对你编写的代码进行测试。

代码如下

 -- BEGIN 
select * from employee e where e.salary = (select max(salary) from employee where Dept=e.Dept);
-- END 
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值