Vertica 中每组查询的前 N ​​个

2023-12-23

这是一个老问题——在Vertica中寻找最佳解决方案。想象一个有列的表格:-

A, B, C, D, E

A-D 列是 int 或 varchar,E 列是 timestamptz 列,其默认值为 GETUTCDATE()。

表格内容示例:-

1, 2, "AAA", 4, 1404305559
1, 2, "BBB", 23, 1404305633
1, 2, "CCC", 62, 1404305705  <-- the max entry for (1,2,"CCC")
1, 2, "AAA", 123, 1404305740 <-- the max entry for (1,2,"AAA")
1, 2, "BBB", 91, 1404305778  <-- the max entry for (1,2,"BBB")

因此,复合 (A,B,C) 值可能存在重复行(D 列是值,E 列是时间戳)。

我想要一个结果集,显示每个唯一的(A,B,C)组合的最新行及其值。因此,上述结果集将如下所示:-

1, 2, "CCC", 62, 1404305705  
1, 2, "AAA", 123, 1404305740 
1, 2, "BBB", 91, 1404305778  

让我们设置示例数据:

CREATE TABLE public.test (
  A int,
  B int,
  C varchar,
  D int, 
  E int
);

INSERT INTO public.test (A, B, C, D, E) VALUES (1, 2, 'AAA', 4, 1404305559);
INSERT INTO public.test (A, B, C, D, E) VALUES (1, 2, 'BBB', 23, 1404305633);
INSERT INTO public.test (A, B, C, D, E) VALUES (1, 2, 'CCC', 62, 1404305705);
INSERT INTO public.test (A, B, C, D, E) VALUES (1, 2, 'AAA', 123, 1404305740);
INSERT INTO public.test (A, B, C, D, E) VALUES (1, 2, 'BBB', 91, 1404305778);

COMMIT;

我们将使用RANK https://my.vertica.com/docs/7.0.x/HTML/index.htm#Authoring/SQLReferenceManual/Functions/Analytic/RANKAnalytic.htm函数对每行进行排名A, B, C并排序E并仅返回顶部的行(排名为 1)。

SELECT a.a, 
       a.b, 
       a.c, 
       a.d, 
       a.e 
FROM   (SELECT a, 
               b, 
               c, 
               d, 
               e, 
               RANK() 
                 OVER ( 
                   PARTITION BY a, b, c 
                   ORDER BY e DESC) AS rank 
        FROM   public.test) a 
WHERE  a.rank = 1; 

这将返回:


 A | B |  C  |  D  |     E
---+---+-----+-----+------------
 1 | 2 | CCC |  62 | 1404305705
 1 | 2 | AAA | 123 | 1404305740
 1 | 2 | BBB |  91 | 1404305778  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vertica 中每组查询的前 N ​​个 的相关文章

  • 如何使用谷歌的“你是说吗?”来实现Python拼写检查器

    我正在寻找一种在 python 中创建一个函数的方法 在该函数中传递一个字符串 然后它返回它是否拼写正确 我不想查字典 相反 我希望它检查 Google 的拼写建议 这样 名人名字和其他各种专有名词将被视为拼写正确 到目前为止 这就是我所处
  • unique_ptr 的 static_pointer_cast 的替代方案

    我明白使用static pointer cast with unique ptr将导致所包含数据的共享所有权 换句话说 我想做的是 unique ptr foo fooFactory do something for a while uni
  • 如何在android上加载本地库?

    我有一个 so 库 是我从另一个 APK 中提取的 我已将其复制到项目中的 libs armeabi 位置 在我的课堂上 我正在加载它 static System loadLibrary mylib 该应用程序崩溃了 08 03 07 52
  • Android 中同一应用程序的多个实例

    如何在从图库应用程序内部共享图像时使用已运行的应用程序 它总是创建已经运行的应用程序的单独实例 我在 Whatsapp 应用程序中观察到同样的问题 是的 另一个用例是当您单击通知时 如果应用程序已经在后台 它将启动一个新实例 using a
  • CUDA 运行时 API 错误 38:未检测到支持 CUDA 的设备

    情况 我有一个 2 gpu 服务器 Ubuntu 12 04 我将 Tesla C1060 与 GTX 670 交换 然后我在 4 2 上安装了 CUDA 5 0 之后我编译了除 simpleMPI 之外的所有示例 没有错误 但当我跑步时
  • Java 8 mapToInt (mapToInt(e -> e)) 到底是如何提高性能的?

    我正在读 Java 8 Lambdas 一书 在某个时候 作者说 尽可能使用原始专用函数是个好主意 因为 性能优势 他在这里指的是mapToInt mapToLong等 问题是说实话我不知道性能从何而来 让我们考虑一个例子 Consider
  • 如何将 TTF 文件转换为 OTF 格式?

    我需要使用 font face功能和我的字体都是TrueType TTF 格式 那么如何将TTF转换为OpenType OTF 格式 如果您使用的是 Linux 则可以使用 FontForge 它可以通过 Python 编写脚本 usr b
  • 每次使用时在复合组件中获取相同的“componentType”实例

    您好 有一个奇怪的问题 我正在使用Composite Component这是我写的 我从之前使用 CC 的支持 bean 中获取了值 componentType bean 除了展示代码之外 我不知道如何更好地描述这一点 我会尽量简短地介绍一
  • Python pickle 的首选(或最常见)文件扩展名

    有时 我见过 pickle pck pcl and db对于包含 Python pickles 的文件 但我不确定最常见或最佳实践是什么 我知道后三个扩展还用于其他用途 相关问题是 使用 REST API 在系统之间发送 pickle 时首
  • 基于学说的自定义 symfony 路由

    我需要使用 symfony 2 进行动态路由 其中 将 slug 参数添加到 url 中并与数据库中的页面相关 每个页面都有一个自己的slug 其内容存储在数据库中 我读了这篇文章高级路由 http www symfony project

随机推荐

  • CouchDB 0.11主要新特性有哪些

    CouchDB 0 11 版本中有哪些值得学习的功能 有哪些资源可以了解这些新发展 Features 通过重写和虚拟主机规则提供良好的 URL 您可以串联或单独使用 意见可以参考any文档 ID 因此当您查询时include docs tr
  • 有没有一种简单的方法可以从 Windows Phone 中的 URI 获取查询字符串参数?

    我目前正在使用自定义 URI 方案来验证使用 OAuth 的用户 为此 我需要从查询字符串中获取某些参数的值 有没有一种简单的方法来获取这些信息 或者是我使用 REGEX 或其他字符串操作的唯一选择 我之前发现过对 ParseQuerySt
  • Apache Derby 嵌入式模式部署

    我有一个 Java 应用程序 它有一个嵌入式 Derby 数据库 尽管没有休眠 该应用程序使用以下属性 datasource driverClassName org apache derby jdbc EmbeddedDriver data
  • 为什么已经弹出的范围会影响后续范围中的 check-sat 时间?

    一般问题 我已经注意到好几次了push pop已经弹出的范围似乎会影响check sat在后续范围的需要 也就是说 假设一个程序具有多个 可能任意嵌套 push pop 作用域 每个作用域都包含一个 check sat 命令 此外 假设第二
  • 涉及闪亮地图生成的问题

    有朋友可以帮我解决以下问题 我在下面插入三个可执行代码 第一个使用生成一个地图sftnetworks包裹 显示两个地点之间的路线 在本例中 定义了生成地图的两个位置 from c df spec clust 1 c Longitude df
  • 如何指定要从私有 github 存储库中提取的 gem?

    我在 Github 上有一个我想使用的私有存储库 我将我的应用程序部署到 Heroku 如何指定私有存储库作为我的 gemfile 上的源 我想仅仅说这些是不够的 gem mygem git gt my github address 我发现
  • 如何在MySQL数据库中创建组合键

    我正在 mysql 服务器上工作 我在其中创建了一个名为 Question 的表 该表的列 属性是 课程 主题 年份 问题 我想创建一个由 课程 主题 年份 组成的主键 或复合键 即 对于特定的课程 科目 年份组合 只能有一个问题 只有一行
  • OpenGL布尔统一?

    我正在尝试将布尔值发送到 OpenGL glsl 着色器 目前我在着色器中有这个 uniform bool foo 我用它来设置它 glUniform1i glGetUniformLocation shader foo true 似乎没有一
  • 将 ReactiveSearch 与普通的 elasticsearch 结合使用

    我想将反应式搜索与我自己的普通 Elasticsearch 集群一起使用 虽然示例和文档描述了这应该是可能的 反应基 https opensource appbase io reactive manual getting started r
  • Pandas - 可以使用两种不同的聚合来聚合两列吗?

    我正在加载一个 csv 文件 其中包含以下列 日期 文本A 文本 数字 数字 我想按列分组 日期 textA 和 textB 但想将 sum 应用于 numberS 但将 min 应用于 number data pd read table
  • 使用 Fluent NHibernate 命名为“Order”的数据库列

    我发现我正在处理的旧数据库的一个表有一个名为 Order 的列 不幸的是我无法更改数据库结构 我的 Fluent NHibernate 课程看起来像 public class SiteMap AutoMap
  • 在 C++ 中是否有一种“正确”的方法来处理名称空间

    我感染了 Java C 和 AS3 我一直想以同样的方式使用 C 命名空间 但我一直读到它们的设计并没有真正考虑到这一点 有没有正确的方法来使用命名空间 例如 在由十几个库项目 比如图形 声音 数学等 和几个应用程序项目组成的代码库中 该怎
  • Linux内核与用户空间程序之间的通信

    我目前正在编写一个 Linux 内核模块 在实现与用户空间程序的通信时遇到问题 该内核模块需要接收用户空间程序发出的任务 并在完成后将结果发送回用户空间程序 当内核模块正在执行其工作时 用户空间程序应该被阻止 我认为内核 用户空间 IPC
  • 如何计算 0 到 360 之间的色调值的平均值和标准差?

    假设使用简单的 HSV 颜色模型获取 5 个色调样本 其值为 355 5 5 5 5 所有色调均为红色 并且就感知而言彼此 相邻 但简单平均值为 75 远离 0 或 360 接近黄绿色 计算这个平均值和相关标准差的更好方法是什么 简单的解决
  • iOS 和红外线

    是否可以使用 iOS iPhone 或 iPad 与红外设备 USB 红外 电视 手机等 通信 嗯 我知道这是可能的 因为 AppStore 中有很多远程 通用远程应用程序 我主要想知道如何 有什么限制和 要求 什么样的附加硬件 必需的 如
  • System.currentTimeMillis() 和 Date getTime() 之间的区别?

    我希望从对返回时间戳的函数的多次调用中获得微小的性能增益 该函数如下所示 public static long get now ms returns number of MILLISECONDS since epoch java util
  • 挂钩标准 Inno Setup 复选框

    我添加了一个用于选择任务的InputOptionWizardPage 这工作正常 但我想添加一些自定义功能 一个任务依赖于另一个任务 因此如果选中第二个复选框 则应选中第一个复选框并将其灰显 为此 我需要访问复选框的属性 我找到了使用完全自
  • 如何为使用 SCons 构建的程序内置 gprof 支持?

    问候 这是我的 SConstruct 文件 env Environment env Append CCFLAGS g pg env Program target program1 source program1 c 这也是编译的输出 sco
  • 尝试使用 Google OAuth 2.0 登录混合流时出错(Google_IO_Exception',消息为“HTTP 错误:无法连接:'0'”)

    我正在尝试使用服务器端混合流程实现 使用 G 登录 按钮 但我不断收到相同的错误 Google IO Exception with message HTTP Error Unable to connect 0 我到处都看过 什么都试过了 但
  • Vertica 中每组查询的前 N ​​个

    这是一个老问题 在Vertica中寻找最佳解决方案 想象一个有列的表格 A B C D E A D 列是 int 或 varchar E 列是 timestamptz 列 其默认值为 GETUTCDATE 表格内容示例 1 2 AAA 4