nosql

--------------------------------------------聚合函数
--查询每个学员学生的年龄总和,最大值 最小值 平均值
SELECT SUM(age), MAX(age), MIN(age), AVG(age), FROM  student GROUP BY college;
SELECT SUM(age), MAX(age), MIN(age), AVG(age), FROM  student GROUP BY clazz;
--查询学生总人数大于2的学院
SELECT college,COUNT(*) FROM student GROUP BY college HAVING COUNT(*) > 2;
SELECT * FROM student;


--------------------------------------------排序
--查询所有学生信息并按照年龄升序排列
--OPDER BY: 全局排序,只使用一个reduce,全局有序,但是比较慢
--默认升序(ASC),也可以指定降序(DESC)
SELECT * FROM student
WHERE age>19
ORDER BY age;

SELECT * FROM student
WHERE age>10
ORDER BY age DESC;
--SORT BY 可以使用多个reduce,每个reduce 输出的数据有序,全局无序
SELECT * FROM student SORT BY age;

--设置reduce的个数
SET mapred.reduce.tasks = 2;

--SORT BY 通常搭配DISTRIBUTE BY 使用
--DISTRIBUTE BY 保证列值相同的数据发送到同一个reduce 进行处理
SELECT * FROM student DISTRIBUTE BY college SORT BY id ;

SELECT * FROM student ORDER BY college, age;

--如果STRORT BY 和DISTRIBUTE BY 使用的是相同列 那么还可以合并成为一个CLUSE BY 子句

--------------------------------------------子查询
--子查询是指在一个完整的查询语句中,嵌套若干个不同功能的小查询,从而完成复杂查询的编写形式
--Hive 只支持WHERE 和FROM 子句中的子查询
--并且WHERE 子查询只支持IN,NOT,IN,EXISTS 和NOT,EXISTS四种情况
USE default;
--查询年龄大于20的学生平均年龄
SELECT AVG(age)
FROM (
    SELECT age
    FROM  student
    WHERE age >20
)a;
--查询zhangsan老师教授的课程名称
SELECT a.course_name
FROM score a
WHERE EXISTS (  --EXISTS如果子句存在数据就执行外层,不存在则不执行)
    SELECT b.name
    FROM teacher b
    WHERE b.name = 'zhangsan' AND b.id = a.teacher_id
);

SELECT a.course_name
FROM score a
WHERE a.teacher_id IN (
    SELECT b.id
    FROM teacher b
    WHERE b.name = 'zhangsan'
)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值