之前有一位朋友咨询我,Impala中怎样实现将多列转为一行,事实上Impala中自带函数能够实现,不用自己定义函数。

以下我開始演示:

-bash-4.1$ impala-shell

Starting Impala Shell without Kerberos authentication

Connected to cdha:21000

Server version: impalad version 1.4.2-cdh5 RELEASE (build eac952d4ff674663ec3834778c2b981b252aec78)

Welcome to the Impala shell. Press TAB twice to see a list of available commands.





Copyright (c) 2012 Cloudera, Inc. All rights reserved.

(Shell build version: Impala Shell v1.4.2-cdh5 (eac952d) built on Tue Sep 16 19:15:40 PDT 2014)

[cdha:21000] > create table student(name string,subject string,score decimal(4,1));    -------------创建演示表:student(脱离学校四年了。还不忘自己是学生^_^)

Query: create table student(name string,subject string,score decimal(4,1))





Returned 0 row(s) in 1.97s

[cdha:21000] > insert into student values('xiaoming','math',89.5); ----------------插入演示数据 (小明和花花的学习成绩,他们感情比較好)

Query: insert into student values('xiaoming','math',89.5)

Inserted 1 rows in 2.56s

[cdha:21000] > insert into student values('xiaoming','english',92);

Query: insert into student values('xiaoming','english',92)

Inserted 1 rows in 0.39s

[cdha:21000] > insert into student values('xiaoming','chinese',98);

Query: insert into student values('xiaoming','chinese',98)

Inserted 1 rows in 0.42s

[cdha:21000] > insert into student values('huahua','chinese',80);

Query: insert into student values('huahua','chinese',80)

Inserted 1 rows in 0.40s

[cdha:21000] > insert into student values('huahua','math',89.5);

Query: insert into student values('huahua','math',89.5)

Inserted 1 rows in 0.29s

[cdha:21000] > select * from student;    ----------每次考完试,老师报分数时都非常紧张    

Query: select * from student

+----------+---------+-------+

| name     | subject | score |

+----------+---------+-------+

| xiaoming | english | 92.0  |

| huahua   | chinese | 80.0  |

| xiaoming | chinese | 98.0  |

| huahua   | math    | 89.5  |

| xiaoming | math    | 89.5  |

+----------+---------+-------+

Returned 5 row(s) in 0.23s





[cdha:21000] > select name,group_concat(subject,',') from student group by  name;  ------------小试牛刀,看到了吧,多列拼接到一起了

Query: select name,group_concat(subject,',') from student group by  name

+----------+----------------------------+

| name     | group_concat(subject, ',') |

+----------+----------------------------+

| xiaoming | english,chinese,math       |

| huahua   | chinese,math               |

+----------+----------------------------+

Returned 2 row(s) in 0.38s

------------以下演示有价值的演示样例,显示高手之招,呵呵

------------这样就能够在一行上面,看到小明和花花的各科成绩了

[cdha:21000] > select name,group_concat(concat_ws('=',subject,cast(score as string)),',') from student group by  name;  

Query: select name,group_concat(concat_ws('=',subject,cast(score as string)),',') from student group by  name

+----------+-------------------------------------------------------------------+

| name     | group_concat(concat_ws('=', subject, cast(score as string)), ',') |

+----------+-------------------------------------------------------------------+

| xiaoming | english=92.0,chinese=98.0,math=89.5                               |

| huahua   | chinese=80.0,math=89.5                                            |

+----------+-------------------------------------------------------------------+

Returned 2 row(s) in 0.39s

[cdha:21000] >

Hive的行列转换请查看: http://blog.csdn.net/jiangshouzhuang/article/details/46810529

Impala中多列转为一行的更多相关文章

  1. 在论坛中出现的比较难的sql问题:37(动态行转列 某一行数据转为列名)

    原文:在论坛中出现的比较难的sql问题:37(动态行转列 某一行数据转为列名) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.

  2. C#对Excel中指定一列或一行实现隐藏或显示!

    C#对Excel中指定一列或一行实现隐藏或显示!不会,求指导!

  3. Python:读取txt中按列分布的数据,并将结果保存在Excel文件中 && 保存每一行的元素为list

    import xlwt import os def write_excel(words,filename): #写入Excel的函数,words是数据,filename是文件名 wb=xlwt.Wor ...

  4. 选择列表中的列无效,因为该列没有包含在聚合函数或 GROUP BY 子句中

    选择列表中的列无效,因为该列没有包含在聚合函数或 GROUP BY 子句中 T-SQL核心语句形式: SELECT     --指定要选择的列或行及其限定  [INTO ]      --INTO子句 ...

  5. Oracle中对列加密的方法

    Oracle中对列加密的方法 2011-12-22 17:21:13 分类: Linux Oracle支持多种列加密方式: 1,透明数据加密(TDE):create table encrypt_col ...

  6. DataGridView合并单元格(一列或一行)

    #region"合并单元格的测试(一列或一行)" // int?是搜索一种类型(可空类型),普通的int不能为null,而用int?,其值可以为null //private int ...

  7. 将excel中某列数据中,含有指定字符串的记录取出,并生成用这个字符串命名的txt文件

    Python 一大重要的功能,就是可处理大量数据,那分不开的即是使用Excel表格了,这里我做下学习之后的总结,望对我,及广大同仁们是一个帮助Python处理Excel数据需要用到2个库:xlwt 和 ...

  8. 神奇的 SQL 之层级 → 为什么 GROUP BY 之后不能直接引用原表中的列

    前言 开心一刻 感觉不妙呀,弟弟舔它! 不该舔的,舔到怀疑人生了...... GROUP BY 后 SELECT 列的限制 标准 SQL 规定,在对表进行聚合查询的时候,只能在 SELECT 子句中写 ...

  9. [转]神奇的 SQL 之层级 → 为什么 GROUP BY 之后不能直接引用原表中的列

    原文:https://www.cnblogs.com/youzhibing/p/11516154.html 这篇文章,对group by的讲解不错 -------------------------- ...

随机推荐

  1. Struct2_使用Ajax调用Action方法并返回值

    一.Login.jsp 1.<head>引入jquery: <script type="text/javascript" src="http://aja ...

  2. UITabBarController 和 UINavigationController 的详解

    首先得搞清这两个控制器之间的层级关系,我们直接看官网给的图,如下所示: 从这张图可以看到:最右边的Assembled views是呈现给用户的界面,它左边的Window是最底层的窗口,重点来了,再往左 ...

  3. Docker从12升级到17ce

    先卸载 yum remove docker* yum remove container-selinux--.el7.centos.x86_64 安装 sudo yum install -y yum-u ...

  4. fragment shader的优化

    ALU: 浮点数精度 选择性降低 shader 指令数 替换一些计算减小指令sqrt, sin, cos, recip 光照 计算用lightmap(用memory sample换计算) vertex ...

  5. Activex打包于发布完整版---微软证书制作

    众所周知,Activex组件没有进行有效的签名,在IE上无法安装的,除非你让用户手工开启“接收任何未签名的ActiveX”,这个很明显不现实.而组件签名需要证书,证书从哪里来,你可以选择付1000到3 ...

  6. 一个tomcat中部署多个项目

    在各自的项目web.xml中添加 <context-param> <param-name>webAppRootKey</param-name> <param- ...

  7. mysql时间字段转换为毫秒格式

    下面是转载的关于MySQL毫秒.微秒精度时间处理的两段篇章,留给自己和供大家参考~~ 一.MySQL 获得毫秒.微秒及对毫秒.微秒的处理 MySQL 较新的版本中(MySQL 6.0.5),也还没有产 ...

  8. 【转】Android一些知识点汇总

    Android常用知识点总汇 一.系统上安装了多种浏览器,能否指定某浏览器访问指定页面?请说明原由. 如果在你的android系统上安装了多种浏览器,能否指定某浏览器访问指定页面?答案当然是:肯定的. ...

  9. RTP 时间戳的处理

    RTP 时间戳的处理   在RTP传输音频数据时,一般选定逻辑时间戳速率与采样速率相同, 但是在传输视频数据时,必须使时间戳速率大于每帧的一个滴答(这样才能使图像回放更为平滑--<用TCP/IP ...

  10. Android colors.xml 颜色列表

    android 常用项 <?xml version="1.0" encoding="utf-8"?> <resources> <c ...