HiveSQL -- HQL(数据查询)语句

目录

一、概述

二、查询语句

1.简单查询

2.聚合、分组查询

3.join连接查询

4.分桶查询

5.正则查询

6.联合查询

7.CTE表达式

8.处理json字符串

总结


一、概述

DQL语句指的是数据查询语句, 主要是对 表数据进行查询操作的.

细节
1. HQL的代表查询格式 较之于 MySQL的单表查询格式, 有3处不同.
  A. HQL 可以支持 CTE表达式.
  B. HQL 筛选列的时候可以写 all 或者 distinct
  C. HQL 支持分桶查询.
2. distribute by 表示分桶, sort by表示桶内排序, 如果 分桶字段 和 排序字段是同一个字段, 则可以用cluster by实现.
  即: cluster by 分桶排序字段 = distribute by 分桶字段 + sort by 桶内排序字段

二、查询语句

1.简单查询

过滤出广东省订单
select * from orders where userAddress like '%广东%';

找出广东省单笔营业额最大的订单
select * from orders where userAddress like '%广东%' order by totalMoney desc limit 1;

2.聚合、分组查询

在已付款订单中,统计每个用户最高的一笔消费金额
		select userId, max(realTotalMoney) realTotalMoney_max  from orders where isPay=1 group by userId;

统计每个用户的平均订单消费额
		select userId, round(avg(realTotalMoney), 2) realTotalMoney_avg  from orders group by userId;

统计每个用户的平均订单消费额,过滤大于10000的数据
	
    方式1: 直接把处理聚合函数的动作, 再写一份放到 having后, 即: 不采用别名的方式.
	select
       userId, round(avg(realTotalMoney), 2) realTotalMoney_avg
    from       orders
    group by   userId
having round(avg(realTotalMoney), 2) > 10000;
	
    方式2: 子查询
	select * from (
        selectuserId,round(avg(realTotalMoney), 2) realTotalMoney_avg
    from
         orders
    group by
        userId
    ) t1 
where realTotalMoney_avg > 10000;
	
    方式3: CTE表达式, 把结果临时用CTE存储, 然后再次查询
			with t1 as (
     select
       userId, round(avg(realTotalMoney), 2) realTotalMoney_avg
    from   orders
    group by  userId
    )
select * from t1 where realTotalMoney_avg > 10000;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值