Clickhouse:0用于缺席汇总

发布于 2025-02-11 07:38:47 字数 424 浏览 1 评论 0原文

想象一下有一个表:

code | value
------------
AAAA | 10
AAAA | 15
BBBB | 5

我想按代码计数(汇总),而缺乏代码计数为0:

select code, count(*) count
from table
where code in ('AAAA', 'CCCC')
group by code

上述查询的实际结果:

code | count
------------
AAAA | 2

但是我希望结果是:

code | count
------------
AAAA | 2
CCCC | 0

是否可以归档预期结果?如果是的话?

Imagine there is a table:

code | value
------------
AAAA | 10
AAAA | 15
BBBB | 5

I would like to count (aggregate) by code and for absent codes counted value to 0:

select code, count(*) count
from table
where code in ('AAAA', 'CCCC')
group by code

The actual result for query above:

code | count
------------
AAAA | 2

But I'd expect result to be:

code | count
------------
AAAA | 2
CCCC | 0

Is it possible to archive expected result? If yes how?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

潜移默化 2025-02-18 07:38:47

您可以做这样的事情:

SELECT `F`.`code`, IFNULL(`AT`.`count`, 0) as `count` FROM 
( 
  SELECT `code`, count(*) as `count` FROM `table` 
  WHERE `code` IN ('AAAA', 'CCCC') group by `code`
) as `AT`
RIGHT JOIN 
(
  SELECT 'AAAA' as `code`
  UNION 
  SELECT 'CCCC' as `code`
) as `F`
ON `F`.`code` = `AT`.`code`

请按照此操作 sql fiddel

You can do something like this:

SELECT `F`.`code`, IFNULL(`AT`.`count`, 0) as `count` FROM 
( 
  SELECT `code`, count(*) as `count` FROM `table` 
  WHERE `code` IN ('AAAA', 'CCCC') group by `code`
) as `AT`
RIGHT JOIN 
(
  SELECT 'AAAA' as `code`
  UNION 
  SELECT 'CCCC' as `code`
) as `F`
ON `F`.`code` = `AT`.`code`

Follow this SQL fiddel.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文