【问题标题】:Clickhouse - Cumulative Sum or Running Total and Percent to TotalClickhouse - 累计或运行总计和百分比
【发布时间】:2018-04-20 16:35:28
【问题描述】:

Clickhouse 让我们深受鼓舞。然而,当我们试图将所有现有脚本移植到 Clickhouse 时,我们遇到了一些障碍。 例如: CUMULATIVE SUM or RUNNING TOTAL。我们试图找到一个等价的窗口函数,例如SUM(SALES) OVER (PARTITION BY PRODUCT ORDER BY SALES)

  • 有没有办法获得累计或运行总计。非常感谢任何输入或指导。谢谢!

  • 这是我关于 Clickhouse(又是一个很棒的数据库)的第二个问题。我们必须移植计算"Percent to total" 的脚本。

    例如

    Product | Sales
    
    P1  100 
    
    P2  200
    
    P3  150
    
    P4  50
    

    我们正在考虑编写一个可以填充的脚本

    Product, Sales, PercenttoTotal
    
    P1, 100, 20%
    
    P2, 200, 40%
    
    P3, 150, 30%
    
    P4, 50,  10%
    

    是否有一种通过 Clickhouse 中的各种功能的快速方法,我们可以使用它来完成此操作。提前致谢。

  • 【问题讨论】:

    • 你能分享你已经尝试过的代码或研究吗?
    • 我们已经尝试查看各种选项 - 显而易见的选项是(在没有 WINDOW 函数的情况下)查看 JOINS - 但是这个运行总数需要 SELF INNER JOIN 与(例如 a1.Sales
    • 您是否尝试过类似的方法:选择销售额/总和(销售额)*100 where ... ?

    标签: sql clickhouse


    【解决方案1】:

    占总数的百分比

    SELECT 
       productid,
       count() as per_product_count,
       per_product_count * 100 / ( SELECT count() from prod_sales ) as percent_to_total
    FROM prod_sales
    GROUP BY productid
    

    累计或累计

    最新版本 (v1.1.54310-stable) 添加了对 runningIncome 函数(尚未记录)的支持,该函数应该像 runningDifference 一样工作,但应该计算总和而不是差值。

    在 github 上查看我对这个问题的回答:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-06
      • 1970-01-01
      • 2020-12-23
      • 1970-01-01
      • 2019-01-09
      • 2014-01-24
      相关资源
      最近更新 更多