一道hive SQL面试题
一、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面试题的更多相关文章
- 一道sql面试题(查询语句)
一道sql面试题(查询语句) id name age 1 a 11 2 b 11 3 c 12 4 d 13 5 e ...
- 汽车之家一道SQL 面试题,大家闲来无事都来敲一敲
写在前面 上周去汽车之家面试,拿到这个SQL笔试题顿时感觉到有些陌生,因为好长时间不写SQL语句了,当时只写了表设计,示例数据和SQL语句都没写出来. 汽车之家应该用的SQL Server, 编程题一 ...
- 【Android】一道Android OpenGL笔试题
一道Android OpenGL笔试题 SkySeraph May. 5th 2016 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph个人站点:www.sky ...
- 【hive】——Hive sql语法详解
Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构 化的数据文件映射为一张数据库表,并提供完整的SQL查 ...
- sql面试题一 学生成绩
sql面试题一 学生成绩 原帖链接:http://topic.csdn.net/u/20081020/15/1ABF54D0-F401-42AB-A75E-DF90027CEBA0.html 表架 ...
- Hive SQL 监控系统 - Hive Falcon
1.概述 在开发工作当中,提交 Hadoop 任务,任务的运行详情,这是我们所关心的,当业务并不复杂的时候,我们可以使用 Hadoop 提供的命令工具去管理 YARN 中的任务.在编写 Hive SQ ...
- hive sql 语法详解
Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构 化的数据文件映射为一张数据库表,并提供完整的SQL查 ...
- Hive sql 语法解读
一. 创建表 在官方的wiki里,example是这种: Sql代码 CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name d ...
- Spark(Hive) SQL中UDF的使用(Python)
相对于使用MapReduce或者Spark Application的方式进行数据分析,使用Hive SQL或Spark SQL能为我们省去不少的代码工作量,而Hive SQL或Spark SQL本身内 ...
随机推荐
- [转载]js正则表达式/replace替换变量方法
原文地址:http://www.blogjava.net/pingpang/archive/2012/08/12/385342.html JavaScript正则实战(会根据最近写的不断更新) 1.j ...
- openssl - 数字证书的编程解析
原文链接: http://www.cangfengzhe.com/wangluoanquan/37.html 这篇文章主要介绍PKI公钥体系中非常核心元素——数字证书的编程解析.在SSL,SET等安全 ...
- Github忽略keil工程生成的链接、编译等文件
*.bak *.ddk *.edk *.lst *.lnp *.mpf *.mpj *.obj *.omf *.plg *.rpt *.tmp *.__i *.crf *.o *.d *.axf *. ...
- python工具 - 读取文件的部分指定内容并输出到外置窗口
一.使用场景 某些配置文件里有一些特定的字符,而这些字符恰巧需要我们采集出来,然后输出到另外一个窗口做展示时,可以使用该工具. 本例的演示则提取配置文件中的[姓名:黄蓉 女 九阴真经.姓名:郭靖 男 ...
- ECMAScript 6 入门之Proxy代理和set
1.Proxy代理 1. var user={ full_name:function () { return this.fname+" "+this.lname; } }; use ...
- BW中DSO的分类及应用
1.DSO的分类,标准DSO(生成主数据标识.对于相同关键字段的值进行合并.可直接出具报表).写优化的DSO(不生成主数据标识.不合并相同关键字段的值.速度快可用于存储大容量数据).直接写入的DSO, ...
- Git应用实践(一)
[时间:2017-03] [状态:Open] [关键词:Git,ssh,远程仓库,git remote] 0-背景 近期在使用Git@oschina上发现以下两个问题: 我的提交有两个名和email, ...
- 【6集iCore3_ADP触摸屏驱动讲解视频】6-5 底层驱动之SDRAM读写(下)
源视频包下载地址: 链接:http://pan.baidu.com/s/1jIC2LKy 密码:zyn3 银杏科技优酷视频发布区: http://i.youku.com/gingko8
- oneinstack 另一个 lnmp环境一键安装工具
oneinstack 另一个 http://oneinstack.com/ OneinStack包含以下组合: lnmp(Linux + Nginx+ MySQL+ PHP) lamp(Linux ...
- visio操作
1.上下标:选中要成为上标的文字,ctrl+shift+"=" 选中要成为下标的文字,ctrl+"="