一、子查询
--子查询是指在一个完整的查询语句中,嵌套若干个不同功能的小查询,从而完成复杂的编写形式
--Hive只支持WHERE 和 FROM 字句中的子查询
--并且WHERE 子查询只支持IN,NOT TN,EXISTS 和NOT EXISTS四种情况
--查询年龄大于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'
)
二、行转列