gpt4 book ai didi

Mysql获取带计数的子列表

转载 作者:行者123 更新时间:2023-11-29 03:36:10 25 4
gpt4 key购买 nike

我有这种形式的表格数据。

it w count
i1 a 2
i1 b 3
i2 a 1
i3 c 2
i4 b 1

当我为每个项目 (it) 和各自的计数查询 a-b 对时。如果某个项目(它)没有同时具有 a 和 b,那么它将被忽略(如 i3)。我需要以形式输出

it a b 
i1 2 3
i2 1 0
i4 0 1

有什么解决办法吗?而且我不能将每个单词存储在不同的列中。单词较多,这样的矩阵的mXn矩阵是稀疏的。

根据 Saharsh 的回答,我们可以这样做

SELECT * FROM (SELECT a.it, SUM(CASE WHEN a.w = 'a' THEN a.count ELSE 0 END) AS a,
SUM(CASE WHEN a.w = 'b' THEN a.count ELSE 0 END) AS b
FROM tableA a WHERE a.w IN ('a', 'b') GROUP BY a.it) WHERE a>0 OR b>0

有没有更好的方法来处理百万行的数据?

最佳答案

您可以使用条件聚合来做到这一点:

select it, max(case when w = 'a' then count else 0 end) as a,
max(case when w = 'b' then count else 0 end) as b
from table t
where w in ('a', 'b')
group by it;

关于Mysql获取带计数的子列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21333025/

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