1:全表查询和指定列查询
hive (default)> select * from emp; hive (default)> select empno, ename from emp; 不区分大小写, sql可以写一行或者多行,关键字不能缩写也不能分行,各子句一般要分行写
2:列别名
hive (default)> select ename AS name, deptno dn from emp; 可以加as,也可以不加,上面ename的别名是name,deptno的别名是dn
3:运算符
hive (default)> select sal +1 from emp; 查询除所有员工的薪水后加1显示
4:常用函数
1:总行数 hive (default)> select count(*) cnt from emp; 2:工资的最大值 hive (default)> select max(sal) max_sal from emp; 3:工资的最小值 hive (default)> select min(sal) min_sal from emp; 4:工资的总和 hive (default)> select sum(sal) sum_sal from emp; 5:工资的平均值 hive (default)> select avg(sal) avg_sal from emp;
5:limit语句
hive (default)> select * from emp limit 5; 查询会返回多行数据,limit子句用于限制返回的行数
6:where语句
hive (default)> select * from emp where sal >1000; 查询薪水大于1000的所有员工
7:比较运算符
查询薪水等于5000的所有员工
hive (default)> select * from emp where sal = 5000;
查询工资在500-1000的员工信息
hive (default)> select * from emp where sal between 500 and 1000;
查询comm为空的所有员工信息
hive (default)> select * from emp where comm is null;
查询工资是1500或5000的员工信息
hive (default)> select * from emp where sal IN (1500, 5000);
8:like和rlike
%代表零个或者多个字符(任意个字符)
_代表一个字符
查询名字以A开头的员工信息
hive (default)> select * from emp where ename LIKE 'A%';
查找名字中第二个字母为A的员工信息
hive (de fault)> select * from emp where ename LIKE '_ A%';
查找名字中带有A的员工信息
hive (default)> select * from emp where ename RLIKE '[A]';
9:逻辑运算符(and/or/not)
查询薪水大于1000,部门是30
hive (default)> select * from emp where sal>1000 and deptno=30;
查询薪水大于1000,或者部门是30
hive (default)> select * from emp where sal>1000 or deptno=30;
查询除了20部门和30部门以外的员工信息
hive (default)> select * from emp where deptno not IN(30, 20);
10:分组
计算emp表每个部门的平均工资
hive (default)> select t.deptno, avg(t.sal) avg_sal from emp t group by t.deptno;
计算emp每个部门中每个岗位的最高薪水
hive (default)> select t.deptno, t.job, max(t.sal) max_sal from emp t group by t.deptno, t.job;
求每个部门的平均薪资大于2000的部门
hive (default)> select deptno, avg(sal) avg_sal from emp group by deptno having avg_sal > 2000;
求每个部门的平均工资
hive (default)> select deptno, avg(sal) from emp group by deptno;



