如何使用[with totals]修饰符的结果

qzlgjiam  于 2021-07-15  发布在  ClickHouse
关注(0)|答案(2)|浏览(563)

我们有修饰符[with totals],它可以汇总所有行中的值,并得到键值为0或null或smth的总结果。问题是我不明白如何在下一次计算中使用这些值
也许我用错格式了

select processing_date,count(*) 
from `telegram.message`
where processing_date>='2019-05-01'
group by processing_date with totals
von4xj4u

von4xj4u1#

文件上说
可以与子查询中的总计一起使用,包括join子句中的子查询(在本例中,将合并各自的总值)。
联接中的子查询示例(ch测试github中的脚本):

SELECT k, s1, s2
FROM
(
    SELECT intDiv(number, 3) AS k, sum(number) AS s1
    FROM
    (
        SELECT *
        FROM system.numbers
        LIMIT 10
    )
    GROUP BY k WITH TOTALS
)
ANY LEFT JOIN
(
    SELECT intDiv(number, 4) AS k, sum(number) AS s2
    FROM
    (
        SELECT *
        FROM system.numbers
        LIMIT 10
    )
    GROUP BY k WITH TOTALS
) USING (k)
ORDER BY k ASC

/* Result: 
┌─k─┬─s1─┬─s2─┐
│ 0 │  3 │  6 │
│ 1 │ 12 │ 22 │
│ 2 │ 21 │ 17 │
│ 3 │  9 │  0 │
└───┴────┴────┘

Totals:
┌─k─┬─s1─┬─s2─┐
│ 0 │ 45 │ 45 │
└───┴────┴────┘

* /

作为一种解决方法,您可以使用客户机库合并多个总计的结果。

ttisahbt

ttisahbt2#

使用“with rollup”而不是“with totals”决定了格式的问题

相关问题