一、hive中实现方法

基表:

组表:

gt

 

gid

gname

1001

g1

1002

g2

1003

g3

create table g(

gid int,

gname string

)row format delimited fields terminated by '\t'

stored as textfile;

用户表:

ut

 

uid

uname

10001

u1

10002

u2

10003

u3

10004

u4

10005

u5

10006

u6

10007

u7

10008

u8

10009

u9

10010

u10

create table u(

uid int,

uname string

)row format delimited fields terminated by '\t'

stored as textfile;

权限表:

gu

 

gid

uid

1001

10002,10001,10003,10009

1002

10004,10005,10006

1003

10007,10008,10010

create table gu(

gid int,

uid string

)row format delimited fields terminated by '\t'

stored as textfile;

组表gt中记录了组的信息组id和组名称,用户表记录了用户基本信息用户id和用户名称,gu是组表和用户表的关系,记录了每一个组内与用户对应关系,其中仅记录id信息。题目是根据gt和ut表将gu表中的所有id转换为名称?

我写的SQL是:

select t.gname,concat_ws(',',collect_set(t.uname)) from (

select g.gname,u.uname

from (

select gid,s_uid from gu

lateral view explode(split(uid,',')) uid as s_uid) temp,g,u

where temp.gid=g.gid and temp.s_uid=u.uid) t

group by t.gname;

运行结果如下:

hive> select t.gname,concat_ws(',',collect_set(t.uname)) from (

> select g.gname,u.uname

> from (

> select gid,s_uid from gu

> lateral view explode(split(uid,',')) uid as s_uid) temp,g,u

> where temp.gid=g.gid and temp.s_uid=u.uid) t

> group by t.gname;

OK

g1 u2,u1,u3,u9

g2 u4,u5,u6

g3 u7,u8,u10

二、oracle中实现方法

1、建立基表

create table g(

gid number(10),

gname varchar2(20)

)

create table u(

usrid number(10),

uname varchar2(20)

)

create table gu(

gid number(10),

usrid varchar2(200)

)

我所实现的sql方法如下:

select g.gname,

(select wm_concat(uname) from u where instr(gu.usrid, u.usrid) > 0)

from gu, g

where gu.gid = g.gid;

执行结果:

SQL> select g.gname,

2         (select wm_concat(uname) from u where instr(gu.usrid, u.usrid) > 0)

3    from gu, g

4   where gu.gid = g.gid;

GNAME                (SELECTWM_CONCAT(UNAME)FROMUWH

-------------------- --------------------------------------------------------------------------------

g1                   u1,u2,u3,u9

g2                   u4,u5,u6

g3                   u7,u8,u10

一道hive SQL面试题的更多相关文章

  1. 一道sql面试题(查询语句)

    一道sql面试题(查询语句)   id name age 1  a        11 2  b        11 3  c        12 4  d        13 5  e        ...

  2. 汽车之家一道SQL 面试题,大家闲来无事都来敲一敲

    写在前面 上周去汽车之家面试,拿到这个SQL笔试题顿时感觉到有些陌生,因为好长时间不写SQL语句了,当时只写了表设计,示例数据和SQL语句都没写出来. 汽车之家应该用的SQL Server, 编程题一 ...

  3. 【Android】一道Android OpenGL笔试题

    一道Android OpenGL笔试题 SkySeraph May. 5th 2016 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph个人站点:www.sky ...

  4. 【hive】——Hive sql语法详解

    Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构 化的数据文件映射为一张数据库表,并提供完整的SQL查 ...

  5. sql面试题一 学生成绩

    sql面试题一 学生成绩   原帖链接:http://topic.csdn.net/u/20081020/15/1ABF54D0-F401-42AB-A75E-DF90027CEBA0.html 表架 ...

  6. Hive SQL 监控系统 - Hive Falcon

    1.概述 在开发工作当中,提交 Hadoop 任务,任务的运行详情,这是我们所关心的,当业务并不复杂的时候,我们可以使用 Hadoop 提供的命令工具去管理 YARN 中的任务.在编写 Hive SQ ...

  7. hive sql 语法详解

    Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构 化的数据文件映射为一张数据库表,并提供完整的SQL查 ...

  8. Hive sql 语法解读

    一. 创建表 在官方的wiki里,example是这种: Sql代码   CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name d ...

  9. Spark(Hive) SQL中UDF的使用(Python)

    相对于使用MapReduce或者Spark Application的方式进行数据分析,使用Hive SQL或Spark SQL能为我们省去不少的代码工作量,而Hive SQL或Spark SQL本身内 ...

随机推荐

  1. [转载]js正则表达式/replace替换变量方法

    原文地址:http://www.blogjava.net/pingpang/archive/2012/08/12/385342.html JavaScript正则实战(会根据最近写的不断更新) 1.j ...

  2. openssl - 数字证书的编程解析

    原文链接: http://www.cangfengzhe.com/wangluoanquan/37.html 这篇文章主要介绍PKI公钥体系中非常核心元素——数字证书的编程解析.在SSL,SET等安全 ...

  3. Github忽略keil工程生成的链接、编译等文件

    *.bak *.ddk *.edk *.lst *.lnp *.mpf *.mpj *.obj *.omf *.plg *.rpt *.tmp *.__i *.crf *.o *.d *.axf *. ...

  4. python工具 - 读取文件的部分指定内容并输出到外置窗口

    一.使用场景 某些配置文件里有一些特定的字符,而这些字符恰巧需要我们采集出来,然后输出到另外一个窗口做展示时,可以使用该工具. 本例的演示则提取配置文件中的[姓名:黄蓉 女 九阴真经.姓名:郭靖 男 ...

  5. ECMAScript 6 入门之Proxy代理和set

    1.Proxy代理 1. var user={ full_name:function () { return this.fname+" "+this.lname; } }; use ...

  6. BW中DSO的分类及应用

    1.DSO的分类,标准DSO(生成主数据标识.对于相同关键字段的值进行合并.可直接出具报表).写优化的DSO(不生成主数据标识.不合并相同关键字段的值.速度快可用于存储大容量数据).直接写入的DSO, ...

  7. Git应用实践(一)

    [时间:2017-03] [状态:Open] [关键词:Git,ssh,远程仓库,git remote] 0-背景 近期在使用Git@oschina上发现以下两个问题: 我的提交有两个名和email, ...

  8. 【6集iCore3_ADP触摸屏驱动讲解视频】6-5 底层驱动之SDRAM读写(下)

    源视频包下载地址: 链接:http://pan.baidu.com/s/1jIC2LKy 密码:zyn3   银杏科技优酷视频发布区: http://i.youku.com/gingko8  

  9. oneinstack 另一个 lnmp环境一键安装工具

    oneinstack  另一个 http://oneinstack.com/ OneinStack包含以下组合: lnmp(Linux + Nginx+ MySQL+ PHP) lamp(Linux ...

  10. visio操作

    1.上下标:选中要成为上标的文字,ctrl+shift+"=" 选中要成为下标的文字,ctrl+"="