gpt4 book ai didi

mysql - 多列交叉表 AKA 枢轴

转载 作者:行者123 更新时间:2023-11-29 02:30:38 24 4
gpt4 key购买 nike

我已经学习和练习 sql 大约 6 个月了。我已经准备好投入其中,只是承认我对此很愚蠢,而且我的大脑无法理解它的大部分模式。我正在尝试创建一个数据透视表。关于这个主题的简单文献并不多,我找到的一个来源谈到了创建多维数据集和基本实体-属性-值 (EAV) 逻辑。不管那是什么意思。

name        action  pagecount
-------------------------------
Company A PRINT 3
Company A PRINT 2
Company A PRINT 3
Company B EMAIL 6
Company B PRINT 2
Company B PRINT 2
Company B PRINT 1
Company A PRINT 3

我想将 name 列与 action 列的总计数和 pagecount< 列的总计数交叉制表(这是正确的术语吗?)/

 name        action_PRINT   action_EMAIL       pagecount_PRINT      pagecount_EMAIL
--------------------------------------------------------------------------------
Company A 4 0 11 0
Company B 3 1 5 6

最佳答案

这种类型的操作称为 PIVOT,但 MySQL 没有数据透视函数,因此您需要使用聚合函数和 CASE 语句来复制它.

您可以使用以下方法生成结果:

select name,
sum(case when action = 'PRINT' then 1 else 0 end) action_print,
sum(case when action = 'EMAIL' then 1 else 0 end) action_email,
sum(case when action = 'PRINT' then pagecount else 0 end) pagecount_print,
sum(case when action = 'EMAIL' then pagecount else 0 end) pagecount_email
from yourtable
group by name

参见 SQL Fiddle with Demo

结果是:

|      NAME | ACTION_PRINT | ACTION_EMAIL | PAGECOUNT_PRINT | PAGECOUNT_EMAIL |
-------------------------------------------------------------------------------
| Company A | 4 | 0 | 11 | 0 |
| Company B | 3 | 1 | 5 | 6 |

关于mysql - 多列交叉表 AKA 枢轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13696613/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com