题目:SQL查询应该返回 200 作为第二高的薪水。如果不存在第二高的薪水, 那么查询应返回 null
对于hive来说是不支持在where里面使用子查询的
数据准备:
建表:
create table if not exists employee (id int, salary int);
插入数据:
insert into employee(id,salary) values(1,100);
insert into employee(id,salary) values(2,200);
insert into employee(id,salary) values(3,300);
查询:
SELECT salary from employee ORDER BY salary desc LIMIT 1,1;
SELECT salary from employee ORDER BY salary desc limit 1 offset 1;
知识点梳理:
ORDER BY salary desc
order by:全局排序,只有一个 Reducer
DESC 表示按倒序排序(即:从大到小排序) ---降序排列
ACS 表示按正序排序(即:从小到大排序)---升序排列
limit 1 offset 1
limit 1,1
LIMIT * OFFSET *的用法
LIMIT 2 OFFSET 1; //limit后面跟的是2条数据,offset后面是从第1条开始读取
LIMIT 2 ,1;//limit后面是从第2条开始读,读取1条信息。
另外注意: 默认数据库是从第0条开始的