使用Tablefunc进行多列数据透视
处理包含多个属性和度量的数据时,可能需要将其从长格式转换为宽格式以进行高效分析。PostgreSQL 的 tablefunc 功能为此类转换提供了一种便捷的解决方案。但是,在处理多个透视列时,务必了解其局限性。
在对先前查询的回复中,一位用户寻求有关使用 tablefunc 进行数据透视的指导,但在处理多个透视列时遇到了挑战。由于 tablefunc 期望每行名称都具有一致的额外列,因此原始查询导致数据不完整。
问题解决
要解决此问题,务必遵守 tablefunc 指定的顺序:
- 行名称:此列必须始终位于第一位。
- 额外列(可选):如果需要,任何其他列都应位于行名称列之后。
- 类别和值(最后两列):透视类别和值列必须按此顺序作为最后两列。
实现
在给定的示例中,所需的输出需要对两列(实体和状态)进行透视。为此,查询进行了如下修改:
SELECT * FROM crosstab( 'SELECT entity, timeof, status, ct FROM t4 ORDER BY 1' , 'VALUES (1), (0)' ) AS ct ( "Attribute" character , "Section" timestamp , "status_1" int , "status_0" int );
通过将 entity 作为行名称并将 timeof 和 entity 的顺序互换,查询成功地对多列进行了透视。
不同设置的变体
对于响应中提到的设置,其中数据按 localt 和 entity 排序,修改后的查询如下:
SELECT localt, entity , msrmnt01, msrmnt02, msrmnt03, msrmnt04, msrmnt05 -- , more? FROM crosstab( 'SELECT dense_rank() OVER (ORDER BY localt, entity)::int AS row_name , localt, entity -- additional columns , msrmnt, val FROM test -- WHERE ??? -- instead of LIMIT at the end ORDER BY localt, entity, msrmnt -- LIMIT ???' -- instead of LIMIT at the end , 'SELECT generate_series(1,5)' -- more? ) AS ct (row_name int, localt timestamp, entity int , msrmnt01 float8, msrmnt02 float8, msrmnt03 float8, msrmnt04 float8, msrmnt05 float8 -- , more? ) LIMIT 1000 -- ?!
此查询使用 dense_rank() 生成代理行名称,并包含可选的 WHERE 子句以过滤处理之前的数据。此外,从子查询中删除了 LIMIT 条件,以通过仅处理必要的行来提高性能。
结论
通过了解局限性并遵循 tablefunc 指定的顺序,即使对于大型数据集,也可以有效地对多列进行数据透视。请记住,通过使用适当的 WHERE 子句或 LIMIT 条件来优化查询,以避免不必要的处理。
以上是如何使用 PostgreSQL 的 tablefunc 有效地透视多个列上的数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

本文讨论了使用MySQL的Alter Table语句修改表,包括添加/删除列,重命名表/列以及更改列数据类型。

文章讨论了为MySQL配置SSL/TLS加密,包括证书生成和验证。主要问题是使用自签名证书的安全含义。[角色计数:159]

文章讨论了流行的MySQL GUI工具,例如MySQL Workbench和PhpMyAdmin,比较了它们对初学者和高级用户的功能和适合性。[159个字符]

本文讨论了使用Drop Table语句在MySQL中放下表,并强调了预防措施和风险。它强调,没有备份,该动作是不可逆转的,详细介绍了恢复方法和潜在的生产环境危害。

本文讨论了在PostgreSQL,MySQL和MongoDB等各个数据库中的JSON列上创建索引,以增强查询性能。它解释了索引特定的JSON路径的语法和好处,并列出了支持的数据库系统。

文章讨论了使用准备好的语句,输入验证和强密码策略确保针对SQL注入和蛮力攻击的MySQL。(159个字符)


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。