之前有一位朋友咨询我,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. EF for Oracle 闪退

    EF oracle 加入实体类型时候闪退 主要原因: Oracle.ManagedDataAcces 版本和 SetupODTforVS2015 版本不一致所致. 更新后 SetupODTforVS2 ...

  2. errno错误码及含义(中文)

    /usr/include/asm/errno.h #define EPERM 1 /* Operation not permitted */操作不允许 #define ENOENT 2 /* No s ...

  3. python笔记13-多线程实战篇(tomorrow)

    安装 1.tomorrow安装,用pip可以直接安装 pip install tomorrow 单线程 1.以下案例是单线程时候跑的情况,在下载图片的时候很耗时. # coding:utf-8 fro ...

  4. 央行mlf,SLF,PSL,MLF,SLO

    央行mlf是什么意思 中国人民银行 中国人民银行(The People's Bank Of China,英文简称PBOC),简称央行,是中华人民共和国的中央银行,中华人民共和国国务院组成部门.在国务院 ...

  5. synchronized 线程同步

    synchronized  通常用来形容一次方法的调用,调用一旦开始,调用者必须等到方法调用返回后,才能继续执行后续的操作. 1.demo package demo1; public class My ...

  6. 通用Json的处理办法

    1.Json的格式: 对象{"name": "value", "name1": "value1"} 对象包含对象数组{& ...

  7. Vue脚手架(vue-cli)搭建和目录结构详解

    一.环境搭建 1.安装node.npm.webpack,不多说 2.安装vue-cli脚手架构建工具,打开命令行工具输入:npm install vue-cli -g,安装完成之后输入 vue -V( ...

  8. php 基于cookie的sessIon机制

    session_start()是session机制的开始,它有一定概率开启垃圾回收,因为session是存放在文件中,PHP自身的垃圾回收是无效的,SESSION的回收是要删文件的,这个概率是根据ph ...

  9. 【转载】Android控件属性大全

    控件属性: android属性 Android功能强大,界面华丽,但是众多的布局属性就害苦了开发者,下面这篇文章结合了网上不少资料, 第一类:属性值为true或falseandroid:layout_ ...

  10. MySQL外键及级联删除 && 表的存储引擎与创建索引 && 删除数据库和表

    Messages表: mysql>create table Messages( ->message_id int auto_increment primary key, ->user ...