HiveSQL基础Day04

一、CTE语法

CTE语法类似子查询,可以将一个select语句计算的结果当成一个新的临时表使用

-- 子查询,将子查询的结果当做表使用
select empno,ename from (
select * from emp) t1;
-- 基本用法
with 临时表名 as(查询语句)
select * from 临时表名
​
-- 多个计算结果保存
with tb1 as(查询语句),,
    tb2 as(查询语句 select * from tb1),
    tb3 as(查询语句)
    .....
select * from tb3 join tb2
with tb1 as(select * from emp)
select ename,sal from tb1;

将如下子查询改为cte语法实现

SELECT t2.shop, t2.user_id, t2.cnt
FROM (SELECT t1.*,
             row_number() over (partition BY t1.shop ORDER BY t1.cnt DESC) rk
      FROM (SELECT user_id, shop, count(*) AS cnt
            FROM test2
            GROUP BY user_id, shop) t1) t2
WHERE rk <= 3;
-- CTE语法可以方便代码阅读,将多个计算步骤拆分
with tb1 as(
    SELECT user_id, shop, count(*) AS cnt
            FROM test2
            GROUP BY user_id, shop
),
    tb2 as(
        SELECT tb1.*,
             row_number() over (partition BY tb1.shop ORDER BY tb1.cnt DESC) rk
      FROM tb1
    )
select * from tb2 where rk <=3;

窗口函数和CTE语法是mysql8.0以上版本支持

二、爆炸函数和合并函数

函数的分类:

udf(user define function) 函数 数据输入多少,返回多少行数据 计算是一进一出

  • hive中的大部分函数都是udf函数

udaf (user define aggregation function)函数 输入多行数据返回一行结果 多进一出

  • 聚合方法

    • sum

    • avg

    • count

    • ma

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值