gpt4 book ai didi

mysql - 通过聚合函数在多级组的所有级别上重复所有值

转载 作者:行者123 更新时间:2023-11-30 22:19:07 24 4
gpt4 key购买 nike

我想获取 colum3 的计数,但我想按 column1 和 column2 对其进行分组,其中 column2 始终具有与 column2 相同(所有)的值。

我当前的版本:http://sqlfiddle.com/#!9/00d9d/1/0

代码:

CREATE TABLE table1
(`column1` varchar(2), `column2` varchar(2), `column3` varchar(2))
;

INSERT INTO table1
(`column1`, `column2`, `column3`)
VALUES
('aa', 'ba', 'ca'),
('aa', 'ba', 'cb'),
('aa', 'ba', 'cc'),
('aa', 'bb', 'ca'),
('aa', 'bb', 'cb'),
('aa', 'bc', 'ca'),
('aa', 'bc', 'cb'),
('aa', 'ba', 'ca'),
('ab', 'ba', 'cb'),
('ab', 'bc', 'ca')
;

我的查询:

SELECT 
column1
,column2
,COUNT(column3)
FROM
table1
GROUP BY
column1
,column2

结果

column1 column2 COUNT(column3)
aa ba 4
aa bb 2
aa bc 2
ab ba 1
ab bc 1

现在我的问题是如何确保在所有 column1 聚合中与 column2 的值相同?在这个例子中我错过了

ab;bb;0

因此,我希望对于 column1 的每个值,column2 都有相同的一组值。这意味着实际上缺失值会被 0 填充。

最佳答案

您必须首先生成所有允许的值 (column1 x column2),然后将其left join 与您的查询相结合。您的查询将提供它知道的计数,否则您只会得到 0:

select base1.column1, base2.column2, ifnull(YourQuery.cnt, 0)
from (select distinct column1 from table1) as base1
cross join (select distinct column2 from table1) as base2
left join
(SELECT column1,column2,COUNT(column3) as cnt
FROM table1
GROUP BY column1,column2
) as YourQuery
on YourQuery.column1 = base1.column1 and YourQuery.column2 = base2.column2;

关于mysql - 通过聚合函数在多级组的所有级别上重复所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37216015/

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