pivot()

阅读(1915) 标签: 列数据, 行数据, 转换,

本章节介绍pivot()函数的用法。

A.pivot( g , … ; F , V ; N i : N' i ,… )

描述:

将序列进行行转列操作

语法:

A.pivot(g:G,;F,V;Ni:N'i,…)

备注:

将序列A进行行转列操作。根据字段/表达式g分组,将字段F中的值Ni作为新的列字段,N'i为新列名,字段V的值根据新列重新对照分布。

参数:

A

序列

g

分组字段/表达式

G

结果集中的字段名

F

A中的字段名称

V

A中的字段名称

Ni

F的字段值

N'i

新列字段名

选项:

@r

序列进行列转行操作。

其中Ni为字段名,转换后作为字段F的值,有参数N'i时,N'i将代替Ni作为F的字段值;原Ni字段的值作为新列V的列数据。

Ni缺省值为A中除g,…以外的所有字段名称 

@s(g:G,;F,f(V);Ni:N'i,…)

f可以为聚合函数:sum/count/max/min/avg;可以且仅可以有一个Ni省略,此时缺省表示聚合其它未进行聚合的F

返回值:

序列/排列

示例:

 

A

 

1

=demo.query("select * from SCORES")

2

=A1.pivot(CLASS,STUDENTID;SUBJECT,SCORE;"English":"ENGLISH","Math","PE")

行转列操作,将SUBJECT的字段值EnglishMathPE作为新字段,其中English新列名为ENGLISHSCORE数据根据新列重新分布数据

3

=A1.pivot(CLASS,STUDENTID;SUBJECT,SCORE;"English","Math","PE")

省略N'i

4

=A1.pivot(CLASS,STUDENTID;SUBJECT,SCORE)

省略NiN'iNi缺省使用SUBJECT中的不重复字段值

5

=A2.pivot@r(CLASS,STUDENTID;SUBJECT,SCORE;ENGLISH:"English",Math,PE)

列转行操作,将列名ENGLISHMathPE作为SUBJECT的字段值,原字段ENGLISHMathPE对应的数据值作为SCORE列的列数据

6

=A2.pivot@r(CLASS,STUDENTID;SUBJECT,SCORE)

省略Ni缺省使用除CLASS,STUDENTID以外的所有字段名称

7

=A1.pivot@s(CLASS;SUBJECT,min(SCORE);"PE":"minPE","Math":"maxMath")

行转列操作,PEMath的最小值作为新字段,新列名分别为minPEminMath

8

=A1.pivot@s(CLASS;SUBJECT,max(SCORE);"English":"maxEnglish",:"other")

省略一个Ni,表示对除English之外的所有字段里取最大值

9

=A1.pivot@s(CLASS;SUBJECT,max(SCORE);:"max")

在所有字段里取最大值