美文网首页
SQL | 备忘录

SQL | 备忘录

作者: cathy1997 | 来源:发表于2020-12-11 11:46 被阅读0次

常用函数

  • 计算字段长度:LENGTH()
  • 计算array长度:SIZE()

查询一个a对应多个b的情况

select
  a,
  collect_list(distinct(b)) as b
from
  table
group by
  a

查询出现次数最多的一些记录

SELECT keyword, count( * ) AS count
FROM article_keyword
GROUP BY keyword
ORDER BY count DESC
LIMIT 20

查询数据库里是否存在重复数据

SELECT count(*),column1,column2,...columnN 
FROM table1 
GROUP BY column1,column2,...columnN 
HAVING count(*) > 1

模糊查询

  • % :表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。
    比如 SELECT * FROM [user] WHERE u_name LIKE '%三%'

  • _ : 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句。
    比如 SELECT * FROM [user] WHERE u_name LIKE ''

  • [ ] :表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。
    比如 SELECT * FROM [user] WHERE u_name LIKE '[张李王]三'

  • [^ ] :表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。
    比如 SELECT * FROM [user] WHERE u_name LIKE '[^张李王]三'

hive解析json数据

  • 普通json数据

str = {"movie":"1193","rate":"5","timeStamp":"978300760","uid":"1"}

select
get_json_object('str', '$.movie') as movie;
...

说明:解析json的字符串json_string,返回path指定的内容。如果输入的json字符串无效,那么返回NUll,这个函数每次只能返回一个数据项。

select b.b_movie,b.b_rate,b.b_timeStamp,b.b_uid 
from json a lateral view 
json_tuple(a.data,'movie','rate','timeStamp','uid') b as b_movie,b_rate,b_timeStamp,b_uid

参数为一组键和json字符串,返回值的元组。该方法比get_json_object高效,因此可以在一次调用中输入多次键。

  • json数组

使用Hive的内置的explode函数,explode()接收一个 array或者map 类型的数据作为输入,然后将 array 或 map 里面的元素按照每行的形式输出。其可以配合 LATERAL VIEW 一起使用。

SELECT
    subview.actor,
    get_json_object(subview.actor, '$.score') as score,
    get_json_object(subview.actor, '$.name') as name
FROM
    a lateral view explode(split(regexp_replace(regexp_replace(actor, '\\[|\\]',''), '\\}\\,\\{', '\\}\\-\\{'), '\\-')) subview as actor

lateral view为侧视图,把某一行数据拆分成多行数据,加上lateral view可以将拆分的单个字段数据与原始表数据关联上。
注意:在使用lateral view的时候需要指定视图别名和生成的新列别名

写入hive表分区

# 往表里加parquet内容
alter table xxx
add if not exists partition (p_date={{ ds_nodash }})
location '/xxx/yyy/p_date={{ ds_nodash }}'"

随机抽取

DISTRIBUTE BY rand(0) --随机打散到不同的节点
sort by rand(0) --每个节点内随机

相关文章

  • SQL | 备忘录

    常用函数 计算字段长度:LENGTH() 计算array长度:SIZE() 查询一个a对应多个b的情况 查询出现次...

  • 开发必备----SQL备忘录

    前言 唉,说是Java开发,其实写的最多的还是SQL,搞得我有点迷啊,我这是SQL工程师吧。。。。不说了,还是写一...

  • 设计模式 | 备忘录模式及典型应用

    本文的主要内容: 介绍备忘录模式 示例 备忘录模式总结 备忘录模式 备忘录模式经常可以遇到,譬如下面这些场景: 浏...

  • Android设计模式之(12)----备忘录模式

    备忘录模式 备忘录模式属于行为模式。 字面意思理解,备忘录是一个存储的东西。备忘录模式主要用于保存对象状态,便于之...

  • 别说你懂思维导图20190506

    思维导图辅助个人时间管理 1、备忘录法 年备忘录、月备忘录、周备忘录等,适用相对固定,事务较少的情况 2、计划法 ...

  • 2018-06-16

    人家的备忘录就真的是备忘录,而我的备忘录简直就是矫情少女心发作时的树洞

  • 备忘录模式

    一、备忘录模式介绍 二、备忘录模式代码实例

  • 备忘录模式(Memento Pattern)

    备忘录模式:如果需要对象能返回之前的状态就使用备忘录模式。 备忘录模式是行为性模式之一。备忘录模式包含原发器(Or...

  • 第5章 -行为型模式-备忘录模式

    一、备忘录模式的简介 二、备忘录模式的实例

  • 设计模式之备忘录模式(Memento模式)

    引入备忘录模式 备忘录模式的实例 备忘录模式的分析 引入备忘录模式 我们在使用文本编辑器的时候,一般如果不小心误操...

网友评论

      本文标题:SQL | 备忘录

      本文链接:https://www.haomeiwen.com/subject/tbupictx.html