如何对多行的一列值求和?

2024-05-17

我有这个表,我想添加几行的“change”列的值(或者更准确地说,从“ne”值为零的行到“ne”值为零的下一行) (不是第二个本身))。 任何答案将不胜感激。

┌─rn─┬───────date─┬─ne─┬───────change─┐
│  0 │ 2008-12-07 │  0 │ -10330848398 │
│  1 │ 2009-04-14 │  1 │       -61290 │
│  2 │ 2009-04-26 │  1 │   9605743360 │
│  3 │ 2013-07-06 │  0 │ -32028871920 │
│  4 │ 2014-01-12 │  1 │ -42296164902 │
│  5 │ 2015-06-08 │  1 │  59100383646 │
└────┴────────────┴────┴──────────────┘

我们期望的结果是这样的。

row    start        end         sum(change) 
--------------------------------------------------
0 | 2008-12-07 | 2009-04-26 | -725,166,328
--------------------------------------------------
1 | 2013-07-06 | 2015-06-08 | -15,224,653,176
--------------------------------------------------

这是一个缺口和孤岛问题。 Canonical 解决方案确实使用窗口函数,但就 Clickhouse 而言,它不支持。

这是一种使用子查询来模拟条件窗口总和的方法:

select
    min(date) start_date,
    max(date) end_date,
    sum(change) sum_change
from (
    select 
        t.*,
        (select count(*) from mytable t1 where t1.date <= t.date and t1.ne = 0) grp
    from mytable t
) t
group by grp

子查询计算有多少行ne = 0从表的第一行到当前行。这定义了记录组。然后剩下要做的就是聚合。

如果您可以使用窗口函数,您可以将其表述为:

select
    min(date) start_date,
    max(date) end_date,
    sum(change) sum_change
from (
    select 
        t.*,
        sum(case when ne = 0 then 1 else 0 end) over(order by date) grp
    from mytable t
) t
group by grp
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何对多行的一列值求和? 的相关文章

随机推荐

  • jQuery ajax 上的 Qunit 单元测试错误

    我已经为 ajax 起诉 Qunit 编写了单元测试 但出现了类似的错误 Error assertion outside test context was success http test loc assets test widget a
  • C 中使用指针的结构冒泡排序

    我想使用 C 中的冒泡排序算法和指针对结构数组进行排序 我有一个汽车结构 typedef struct char model 30 int hp int price cars 我为 12 个项目分配内存 cars pointer cars
  • .Net Core 数据注释 - 使用共享资源进行本地化

    我想使用共享的 resx 文件来指定所有可翻译的字符串 既是为了翻译方便 更重要的是为了避免出现与 DRY 原则冲突的数十个单独的 resx 文件 我让它与 IStringLocalizer 一起用于控制器和视图 但我只是不知道如何为模型的
  • nuxtjs 无法在生产环境中显示动态 url

    我正在使用 nuxjs 构建我的项目 并创建一个动态显示地点信息的页面 当我跑步时npm run dev并测试http localhost 3000 place 66bb50b7a5 http localhost 3000 place 66
  • 在 IOS 中从 iPhone 删除资产(图片或视频)

    我正在开发一个 Iphone 应用程序 我可以使用 Assetslibrary 枚举资产并将它们加载到表视图中 用户可以在应用程序中删除一行 图片 视频 但如何直接从我的应用程序更新 Iphone 相册 否则 刷新时 表视图将重新加载之前删
  • Qt 插槽是否与其他代码并行运行?

    在此函数示例中 void MyClass myFunction emit MySignal1 emit MySignal2 如果我有slot1倾听MySignal1 and slot2倾听MySignal2 1 Is slot1总是会在之前
  • 抑制 makefile 中命令调用的回显?

    我为一个作业编写了一个程序 该程序应该将其输出打印到标准输出 分配规范需要创建一个 Makefile 当调用它时make run gt outputFile应该运行该程序并将输出写入一个文件 该文件的 SHA1 指纹与规范中给出的指纹相同
  • Mongodb 聚合中对数组元素求和

    我有以下收藏c每个文档内的数组 id 1 k 2 2 type dog c parentId 1 p 2 2 parentId 1 p 1 4 id 2 k 4 3 type cat c parentId 2 p 5 2 parentId
  • java.lang.IllegalStateException:未定义负载平衡的 Feign 客户端。您是否忘记包含 spring-cloud-starter-netflix-ribbon ?

    我遇到异常 FactoryBean threw exception on object creation nested exception is java lang IllegalStateException No Feign Client
  • Clojure 集合与序列的相等性

    我注意到 Clojure 1 4 似乎很乐意考虑向量等于seq相同的向量 但同样不适用于地图 1 2 seq 1 2 gt true 1 2 seq 1 2 gt false 为什么要这样的行为 这样会有所不同吗 Clojure 的 可以认
  • TEST 镜像默认数据库但没有数据

    我正在尝试对我的 Django 应用程序进行一些测试 我使用了数据库镜像作为测试数据库 当我尝试运行一些测试时 默认数据库 中的数据似乎在镜像测试数据库中不可用 default sqlite ENGINE django db backend
  • Pandas DataFrame 具有 X、Y 坐标到 NumPy 矩阵

    我有一个包含列的 DataFrameX Y and value e g X Y value 1 1 56 2 1 13 3 1 25 1 2 7 2 2 18 1 123 91 50 123 32 我需要将其转换为 DataFrame 到
  • VBA 字符串 255 个字符限制

    我在使用 VBA 时遇到问题 并注意到它的字符串限制为 255 个字符 我实际上正在尝试通过 POST 发送 JSON 并暂停执行 我注意到该字符串始终只有 255 个字符 有没有办法调整字符串的大小或其他什么 我在这个问题上浪费了大约 6
  • 使用 jquery 单击或更改广播上的事件

    我的页面中有一些收音机 我想在检查的收音机发生变化时执行一些操作 但是代码在 IE 中不起作用 input radio change 在谷歌搜索后 人们建议使用click反而 但这不起作用 这是示例代码
  • 如何通过替换为空页映射来取消映射 mmap 文件

    Linux 用户空间有没有办法用空页面 映射自 dev null 或者可能是一个空页面 重复映射到从文件映射的页面的顶部 对于上下文 我想找到这个 JDK bug 的修复 https bugs openjdk java net browse
  • 在 Emacs 中,如何确定哪个包正在加载 Tramp?

    我与 ranp 和 cygwin mount 有一个奇怪的交互 我认为 Emacs 文件名的制表符补全会附加一个额外的 i cygwin https stackoverflow com questions 1705802 emacs tab
  • JDesktopPane 放置

    我有一个 JDesktopPane 并希望以网格样式显示 JInternalFrames 而不覆盖框架 框架的尺寸会有所不同 因此应动态分配它们的位置 我可以存储最后放置的框架的坐标 但框架可以移动 最小化或关闭 它们是一种以整齐的方式放置
  • 信任库是否需要子 ca 证书?

    我正在尝试设置分层 PKI 我是否可以创建仅包含根 ca 证书的信任库 这是否意味着我的应用程序信任由子 ca 证书签名的证书 而子 ca 证书又由根 ca 签名 顺便说一句 您似乎必须提供整个证书链 包括根 ca 证书 当然 如果根 ca
  • 当变量有连字符时的 Patsy 公式

    我正在尝试将 statsmodel 线性回归函数与公式一起使用 我的示例数据来自 Pandas 数据框 我对公式中的列名称有一个小问题 由于下游流程 我的列名称中包含连字符 例如 VOLT B NN B IDW 现在 保留连字符的原因之一是
  • 如何对多行的一列值求和?

    我有这个表 我想添加几行的 change 列的值 或者更准确地说 从 ne 值为零的行到 ne 值为零的下一行 不是第二个本身 任何答案将不胜感激 rn date ne change 0 2008 12 07 0 10330848398 1