【Hive】with子查询与create、insert连用

子查询与create/insert一同使用时,语句写法略有不同。如下。

1 create table

-- 创建表时,create table应该写在所有的with查询之前
create table t_cre as
with t1 as (
    select outid, name
    from t_sel1
),t2 as (
    select outid, name
    from t_sel2
)
sel
  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Hive子查询(Subquery)是指在一个查询语句中嵌套另外一个完整的查询语句,用于限制或过滤结果集。在Hive中,子查询可以嵌套到SELECT、FROM、WHERE和HAVING子句中。 下面是一些示例: 1. 在SELECT子句中使用子查询 ``` SELECT name, age FROM student WHERE age = (SELECT MAX(age) FROM student); ``` 上面的查询语句中,子查询 `(SELECT MAX(age) FROM student)` 返回了student表中age列的最大值,它作为外部查询中的过滤条件,限制了结果集只包含age列的最大值所对应的记录。 2. 在FROM子句中使用子查询 ``` SELECT t1.name, t1.age, t2.avg_score FROM student t1 JOIN (SELECT AVG(score) as avg_score, class_id FROM score GROUP BY class_id) t2 ON t1.class_id = t2.class_id; ``` 上面的查询语句中,子查询 `(SELECT AVG(score) as avg_score, class_id FROM score GROUP BY class_id)` 返回了score表中每个班级的平均成绩。它作为外部查询的一个虚拟表,与student表进行JOIN操作,计算每个学生所在班级的平均成绩。 3. 在WHERE子句中使用子查询 ``` SELECT name, age FROM student WHERE class_id IN (SELECT class_id FROM score WHERE score >= 60); ``` 上面的查询语句中,子查询 `(SELECT class_id FROM score WHERE score >= 60)` 返回了score表中成绩大于等于60分的班级ID,它作为外部查询中的过滤条件,限制了结果集只包含在这些班级中的学生记录。 4. 在HAVING子句中使用子查询 ``` SELECT class_id, AVG(score) as avg_score FROM score GROUP BY class_id HAVING AVG(score) >= (SELECT AVG(score) FROM score); ``` 上面的查询语句中,子查询 `(SELECT AVG(score) FROM score)` 返回了整个score表的平均成绩,它作为外部查询的过滤条件,只保留班级平均成绩大于等于该值的记录。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值