本章节介绍pivot()函数的用法。
描述:
将序列进行行转列操作
语法:
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的字段值English、Math、PE作为新字段,其中English新列名为ENGLISH;SCORE数据根据新列重新分布数据 |
3 |
=A1.pivot(CLASS,STUDENTID;SUBJECT,SCORE;"English","Math","PE") |
省略N'i |
4 |
=A1.pivot(CLASS,STUDENTID;SUBJECT,SCORE) |
省略Ni和N'i,Ni缺省使用SUBJECT中的不重复字段值 |
5 |
=A2.pivot@r(CLASS,STUDENTID;SUBJECT,SCORE;ENGLISH:"English",Math,PE) |
列转行操作,将列名ENGLISH、Math和PE作为SUBJECT的字段值,原字段ENGLISH、Math和PE对应的数据值作为SCORE列的列数据 |
6 |
=A2.pivot@r(CLASS,STUDENTID;SUBJECT,SCORE) |
省略Ni,缺省使用除CLASS,STUDENTID以外的所有字段名称 |
7 |
=A1.pivot@s(CLASS;SUBJECT,min(SCORE);"PE":"minPE","Math":"maxMath") |
行转列操作,PE、Math的最小值作为新字段,新列名分别为minPE和minMath |
8 |
=A1.pivot@s(CLASS;SUBJECT,max(SCORE);"English":"maxEnglish",:"other") |
省略一个Ni,表示对除English之外的所有字段里取最大值 |
9 |
=A1.pivot@s(CLASS;SUBJECT,max(SCORE);:"max") |
在所有字段里取最大值 |