1.COALESCE( value1,value2,... )
  
  The COALESCE function returns the fist not NULL value from the list of values. If all the values in the list are NULL, then it returns NULL.
  
  Example: COALESCE(NULL,NULL,5,NULL,4) returns 5;
  
  coalesce()函数,在处理空值时,'' 和NULL是不一样的,函数认为NULL是空值,但'' 不是空值,
  
  故coalesce('','test')会返回'',而不是test;而coalesce(NULL,'test')回返回test;
  
  2.NTILE,ROW_NUMBER,RANK,DENSE_RANK;
  
  ①NTILE:用户将分组数据按照顺序切分成N片,返回当前切片值。
  
  NTILE(n),用于将分组数据按照顺序切分成n片,返回当前切片值
  
  NTILE不支持ROWS BETWEEN,比如 NTILE(2) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN 3 PRECEDING AND CURRENT ROW)
  
  如果切片不均匀,默认增加第一个切片的分布
  
  SELECT
  
  cookieid,
  
  createtime,
  
  pv,
  
  NTILE(2) OVER(PARTITION BY cookieid ORDER BY createtime) AS rn1, --分组内将数据分成2片
  
  NTILE(3) OVER(PARTITION BY cookieid ORDER BY createtime) AS rn2, --分组内将数据分成3片
  
  NTILE(4) OVER(ORDER BY createtime) AS rn3 --将所有数据分成4片
  
  FROM lxw1234
  
  ORDER BY cookieid,createtime;
  
  cookieid day pv rn1 rn2 rn3
  
  -------------------------------------------------
  
  cookie1 2015-04-10 1 1 1 1
  
  cookie1 2015-04-11 5 1 1 1
  
  cookie1 2015-04-12 7 1 1 2
  
  cookie1 2015-04-13 3 1 2 2
  
  cookie1 2015-04-14 2 2 2 3
  
  cookie1 2015-04-15 4 2 3 3
  
  cookie1 2015-04-16 4 2 3 4
  
  cookie2 2015-04-10 2 1 1 1
  
  cookie2 2015-04-11 3 1 1 1
  
  cookie2 2015-04-12 5 1 1 2
  
  cookie2 2015-04-13 6 1 2 2
  
  cookie2 2015-04-14 3 2 2 3
  
  cookie2 2015-04-15 9 2 3 4
  
  cookie2 2015-04-16 7 2 3 4
  
  比如,统计一个cookie,pv数最多的前1/3的天
  
  SELECT
  
  cookieid,
  
  createtime,
  
  pv,
  
  NTILE(3) OVER(PARTITION BY cookieid ORDER BY pv DESC) AS rn
  
  FROM lxw1234;
  
  --rn = 1 的记录,就是我们想要的结果
  
  cookieid day pv rn
  
  ----------------------------------
  
  cookie1 2015-04-12 7 1
  
  cookie1 2015-04-11 5 1
  
  cookie1 2015-04-15 4 1
  
  cookie1 2015-04-16 4 2
  
  cookie1 2015-04-13 3 2
  
  cookie1 2015-04-14 2 3
  
  cookie1 2015-04-10 1 3
  
  cookie2 2015-04-15 9 1
  
  cookie2 2015-04-16 7 1
  
  cookie2 2015-04-13 6 1
  
  cookie2 2015-04-12 5 2
  
  cookie2 2015-04-14 3 2
  
  cookie2 2015-04-11 3 3
  
  cookie2 2015-04-10 2 3
  
  ②ROW_NUMBER:Row_number函数返回一个唯一的值,当碰到相同数据时,排名按照记录集中记录的顺序依次递增。
  
  ROW_NUMBER() –从1开始,按照顺序,生成分组内记录的序列
  
  –比如,按照pv降序排列,生成分组内每天的pv名次
  
  ROW_NUMBER() 的应用场景非常多,再比如,获取分组内排序第一的记录;获取一个session中的第一条refer等。
  
  SELECT
  
  cookieid,
  
  createtime,
  
  pv,
  
  ROW_NUMBER() OVER(PARTITION BY cookieid ORDER BY pv desc) AS rn
  
  FROM lxw1234;
  
  cookieid day pv rn
  
  -------------------------------------------
  
  cookie1 2015-04-12 7 1
  
  cookie1 2015-04-11 5 2
  
  cookie1 2015-04-15 4 3
  
  cookie1 2015-04-16 4 4
  
  cookie1 2015-04-13 3 5
  
  cookie1 2015-04-14 2 6
  
  cookie1 2015-04-10 1 7
  
  cookie2 2015-04-15 9 1
  
  cookie2 2015-04-16 7 2
  
  cookie2 2015-04-13 6 3
  
  cookie2 2015-04-12 5 4
  
  cookie2 2015-04-14 3 5
  
  cookie2 2015-04-11 3 6
  
  cookie2 2015-04-10 2 7
  
  ③RANK 和 DENSE_RANK:
  
  RANK:Rank函数返回一个唯一的值,除非遇到相同的数据时,此时所有相同数据的排名是一样的,同时会在最后一条相同记录和下一条不同记录的排名之间空出排名。
  
  DENSE_RANK:Dense_rank函数返回一个唯一的值,除非当碰到相同数据时,此时所有相同数据的排名都是一样的。
  
  —RANK() 生成数据项在分组中的排名,排名相等会在名次中留下空位
  
  —DENSE_RANK() 生成数据项在分组中的排名,排名相等会在名次中不会留下空位
  
  SELECT
  
  cookieid,
  
  createtime,
  
  pv,
  
  RANK() OVER(PARTITION BY cookieid ORDER BY pv desc) AS rn1,
  
  DENSE_RANK() OVER(PARTITION BY cookieid ORDER BY pv desc) AS rn2,
  
  ROW_NUMBER() OVER(PARTITION BY cookieid ORDER BY pv DESC) AS rn3
  
  FROM lxw1234
  
  WHERE cookieid = 'cookie1';
  
  cookieid day pv rn1 rn2 rn3

Slf4j public class TestThreadlocal {
private static ThreadLocal<String> local = ThreadLocal.withInitial(() -> "init");

public static void main(String[] args) throws InterruptedException {
Runnable r = new TT();
new Thread(r, "thread1").start();
Thread.sleep(2000);
new Thread(r, www.michenggw.com"thread2"www.baishenyvip.com).start();
log.info("exit"www.bsylept.com);
private static class TT implements Runnable {
@Override
public void run(www.jiahuayulpt.com ) {
log.info(local.get(www.yongshi123.cn));
local.set(Thread.currentThread().getName(www.dfgjpt.com));
log.info("set local name and get: {}", local.get());
  
  --------------------------------------------------
  
  cookie1 2015-04-12 7 1 1 1
  
  cookie1 2015-04-11 5 2 2 2
  
  cookie1 2015-04-15 4 3 3 3
  
  cookie1 2015-04-16 4 3 3 4
  
  cookie1 2015-04-13 3 5 4 5
  
  cookie1 2015-04-14 2 6 5 6
  
  cookie1 2015-04-10 1 7 6 7
  
  rn1: 15号和16号并列第3, 13号排第5
  
  rn2: 15号和16号并列第3, 13号排第4
  
  rn3: 如果相等,则按记录值排序,生成唯一的次序,如果所有记录值都相等,或许会随机排吧。

关于Hive中常用函数需要注意的点小合集的更多相关文章

  1. LoadRunner中常用函数参考手册

    基础篇1:LoadRunner中常用函数参考手册 常用函数列表 web_url web_submmit_form VS web_submmit_data VS web_custom_request w ...

  2. Hive中日期函数总结

    --Hive中日期函数总结: --1.时间戳函数 --日期转时间戳:从1970-01-01 00:00:00 UTC到指定时间的秒数 select unix_timestamp(); --获得当前时区 ...

  3. hive中标准偏差函数stddev()详细讲解

    1.标准偏差概念 标准偏差(Std Dev,Standard Deviation) -统计学名词.一种度量数据分布的分散程度之标准,用以衡量数据值偏离算术平均值的程度.标准偏差越小,这些值偏离平均值就 ...

  4. PHP 常用函数库和一些实用小技巧

    PHP 常用函数库和一些实用小技巧 作者: 字体:[增加 减小] 类型:转载   包括文件读取函式,文件写入函式,静态页面生成函式,目录删除函式等   文件读取函式 //文件读取函式 function ...

  5. OpenCV图像处理中常用函数汇总(1)

    //俗话说:好记性不如烂笔头 //用到opencv 中的函数时往往会一时记不起这个函数的具体参数怎么设置,故在此将常用函数做一汇总: Mat srcImage = imread("C:/Us ...

  6. JavaScript中常用函数(入门级)(持续更新)

    本文中枫竹梦介绍一些JavaScript中入门级的常用函数,对于已经过了入门的童鞋可选择略过,都是一些非常实用的函数.如果发现什么问题,欢迎讨论. 问题列表 Q1: 设计一个函数repeatIt(st ...

  7. Hive中自定义函数

    Hive的自定义的函数的步骤: 1°.自定义UDF extends org.apache.hadoop.hive.ql.exec.UDF 2°.需要实现evaluate函数,evaluate函数支持重 ...

  8. 5. openCV中常用函数学习

    一.前言 经过两个星期的努力,一边学习,一边写代码,初步完成了毕业论文系统的界面和一些基本功能,主要包括:1 数据的读写和显示,及相关的基本操作(放大.缩小和移动):2 样本数据的选择:3 数据归一化 ...

  9. javascript中常用函数汇总

    js中函数很多,在实际项目开发中,函数的应用可以很大程度上简化我们的代码,所以在此记下开发中js中常用的函数,增强记忆. 1.isNaN(X):函数用于检查其参数是否是非数字值. 如果 x 是特殊的非 ...

随机推荐

  1. WebService与CXF

    一:Webservice 1:WebService是干什么的?有什么用? 一言以蔽之:WebService是一种跨编程语言和跨操作系统平台的远程调用技术. 所谓跨编程语言和跨操作平台,就是说服务端程序 ...

  2. 用JavaDoc生成项目文档

    项目到了尾声,大家都开始头疼——又要写文档了……是的,我们大多数人都不是从正规的Programer训练出来的.当初学习编程序的时候,就从来没有想过要给自己写的那几个程序编写一份完整的文档,所有的注释都 ...

  3. Git .gitignore文件的使用

    本文转载自 http://blog.csdn.net/xmyzlz/article/details/8592302 在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改 .giti ...

  4. WPF解决界面全屏化但不遮挡任务栏的问题

    原文:WPF解决界面全屏化但不遮挡任务栏的问题 学习C#有一段时间了,现在跟着做项目,碰到有个客户端界面总是全屏,对于客户来说没有任务栏很不习惯,所以做了些略微的修改   </pre>&l ...

  5. 认识Python&基础环境搭建

    前言 作为.NET Coder可能.NET Core是现阶段首要学习方向,但是说实在的对Core真的不感冒. 原因有几点: 1.公司项目底层需要的一部分库,Core还不支持. 2.同样的需求,.NET ...

  6. WinForm 简易仿360界面控件

    因为经常要做一些1.2千行的小工具,WinForm自带的TabCtrl又不美观,所以想做成360的样子,在网上找来找去,都只有散乱的代码,没有可以通用的结构,于是自己写了一个简易的通用控件. 控件主要 ...

  7. QQ群管理员申请帖(本次截止日期为2017-03-25)

    本帖专门为技术交流群申请管理员专用. 管理员的权利: 1.有权在成员违规的情况下直接剔除. 2.有权加入多个交流群. 3.有权引人入群. 4.艾特全体是权利,但要慎用,通常情况下,没有我本人的授意,不 ...

  8. 关于dreamweaver的软件测评

    最近在用javascript编写程序,于是便用到了dreamweaver .所以,想写一个关于dreamweaver的软件测评. 学生本人使用的是dreamweaver 8.首先,谈谈本人使用感受,打 ...

  9. 【Beta阶段】M2事后分析

    先上照片,最后一次开会了啊... 计划 你原计划的工作是否最后都做完了? 如果有没做完的,为什么? 答:没有全部做完,到目前为止,我们的还有几个实验的报告生成功能没有上线.这几个实验的数据处理文件已经 ...

  10. Post Tuned Hashing,PTH

    [ACM 2018] Post Tuned Hashing_A New Approach to Indexing High-dimensional Data [paper] [code] Zhendo ...