hiveQL去重

去重:

以id进行分组,然后取出每组的第一个

select * from (select *,row_number() over (partition by id) num from t_link) t where t.num=1;

以id进行分组,按照create_time降序排序后,然后取出每组的第一个

select * from (select *,row_number() over (partition by id order by create_time desc) num from t_link) t where t.num=1;

将去重后的数据重新存储 

insert overwrite table t_link2 
  select * from 
  (
    select *,row_number() over (partition by id order by crt_time desc) num from t_link
    ) t where t.num=1;

 去重之后与其他表join算匹配数

select count(*) as cnt from 
    (
        select * from table1 where pt='2017-06-01') t1 
    join 
    (
        select * from (select *,row_number() over(partition by id) num from table2 where pt='2017-06-01') t where t.num =1) t2 
    on t1.id = t2.id

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • hiveQL求差集

    hive sql求差集的方法 1、什么是差集 set1 - set2,即去掉set1中存在于set2中的数据。 2、hive中计算差集的方法,基本是使用左外链接...

    用户1225216
  • redis事务

    本文记录一些redis事务相关的原理。 1、基本概念 1)什么是redis的事务? 简单理解,可以认为redis事务是一些列redis命令的集合,并且有如下两个...

    用户1225216
  • linux命令和awk

    1、统计一下代码量 find . -name "*.py" | xargs wc -l | awk 'BEGIN {size = 0} { size+=$1} ...

    用户1225216
  • Msql面试zongjie

    说到数据库每次面试都会在sql语句上吃大亏,考察的问题无非是去重,连表查询,求最值,平均值等,看起来很简单吧,但是写起来还真有点困难,不会sql面试会大打折扣。...

    wencheng
  • Hive快速入门系列(10) | Hive的查询语法

    注: 1、order by 会对输入做全局排序,因此只有一个reducer,会导致当输入规模较大时,需要较长的计算时间。 2、sort by不是全局排序,其...

    不温卜火
  • 大数据-Hive查询语法

    因此,如果分桶和sort字段是同一个时,此时, cluster by = distribute by + sort by 分桶表的作用:最大的作用是用来提高j...

    cwl_java
  • 小学生SQL50题

    已知有如下4张表: 学生表: student(s_id,s_name,s_birth,s_sex) –学生编号,学生姓名, 出生年月,学生性别 课程表: cou...

    大数据真好玩
  • Hive SQL50道练习题

    – 4、查询平均成绩小于60分的同学的学生编号和学生姓名和平均成绩: – (包括有成绩的和无成绩的)

    大数据技术与架构
  • Oracle函数学习(转换函数)

    –to_number(数值类型的字符):将字符转换为数值 –to_char(数值或者是日期):将数值或者日期转换为字符 –to_date(日期格式的字符):...

    葆宁
  • 数据库优化

      1. 对sql语句进行优化, 首先对where和order by涉及的列加索引。

    用户7798898

扫码关注云+社区

领取腾讯云代金券