Oracle 中一列的前 n 个不同值

2023-12-09

我正在使用一个查询,其中一部分获取特定列的前 3 个。

它创建该列的一个不同的子查询,限制为 3 行,然后将这些行过滤到主查询以执行前 3 项操作。

WITH subquery AS (
  SELECT col FROM (
    SELECT DISTINCT col
    FROM tbl
  ) WHERE ROWNUM <= 3
)

SELECT col
FROM tbl
WHERE tbl.col = subquery.col

所以原来的表是这样的:

 col
-----
 a
 a
 a
 b
 b
 b
 c
 d
 d
 e
 f
 f
 f
 f

并且查询返回该列的前 3 行(而不是前 3 行,后者只会a):

 col
-----
 a
 a
 a
 b
 b
 b
 c

我正在尝试了解是否有更正确的方法来执行此操作,因为真正的查询很大,并且使用看起来几乎相同的子查询复制其大小只是为了获得前 3 个查询,这很难使用和理解/修改。

有没有更好的方法来获取 Oracle 中一列的前 3 个不同值?


是的,您可以使用dense_rank并避免重复的代码:

select col 
  from (select col, dense_rank() over (order by col) rnk from tbl)
  where rnk <= 3

demo

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Oracle 中一列的前 n 个不同值 的相关文章

随机推荐

  • 确定 viewWillAppear 是来自打开应用程序,还是取消选择模式

    我目前正在初始屏幕上加载应用程序加载数据 在我看来这会发生 我还有一个在此屏幕上弹出的模式 关闭时执行与 viewWillAppear 中加载数据相同的逻辑 如何仅在应用程序打开时加载数据 而不是在模式关闭时加载数据 UIViewContr
  • std::vector 中的数据存储是连续的吗? [复制]

    这个问题在这里已经有答案了 我有一个字符向量 我想将其内容作为 char 传递给另一个函数 void foo boost shared ptr
  • 难以理解/可视化 SICP 流汉明数程序

    我基本上陷入了 SICP 练习 3 56 的困境 问题是这样的 练习3 56 R Hamming 首先提出的一个著名问题是 按升序且不重复地枚举除 2 3 或 5 之外没有质因数的所有正整数 一种明显的方法是简单地测试每个整数反过来看看它是
  • 制作一个循环来形成一个列表?

    def make services routes data routes curr route x split routes routes data service data1 x 1 106 106 1 1 43009 106 2 51
  • C# 将列表与自定义对象进行比较但忽略顺序

    我正在尝试比较两个包含自定义对象的列表 包装在一个对象中 我不关心顺序 但如果列表 1 包含 1 2 3 4 那么列表 2 必须and only包含这些元素 例如 4 2 3 1 基于比较两个 List 对象是否相等 忽略顺序ignorin
  • 如何在 PHP 中实时实现 For 循环

    我想制作一个实时给出结果的脚本 在我的脚本中它有 3 个步骤 第一步是从网页中获取所有链接 我使用 pregmatch all 函数 因为我需要的所有链接都以相同的域开始http example com docs 并从中抓取http tes
  • Windows 中的 64 位和 32 位注册表问题(C# 编程)

    我正在尝试将数据从 Windows 注册表获取到我的软件 但有一件事我遇到了麻烦 如果我的软件在 64 位系统上运行 则注册表路径将为 HKEY LOCAL MACHINE SOFTWARE Wow6432Node AVAST Softwa
  • 将 BigQuery 脚本的结果返回到 Python 客户端

    截至 2019 年秋季 BigQuery 支持脚本编写 这太棒了 我不明白的是BigQuery 的 Python 客户端尚有能力利用这一新功能 例如 运行以下 Python 代码 client bigquery Client QUERY B
  • EF Core,按 UTC 日期的月份和年份分组

    我将所有日期存储为 UTC 并且我需要按月份和年份对实体进行分组 所以我正在这样做 dbContext Tickets Where x gt x Date gt from x Date lt to GroupBy x gt new Year
  • TableView 单元格中 TextView 的可变高度

    我有一个基本的UITableView 我在线填写了一个网络服务 但我找不到一种方法来根据我的高度设置单元格的高度 动态单元格数量 textView 这是我填写单元格的方式 UITextView textView UITextView cel
  • PHP/jQuery - 如何将多维 PHP 数组转换为 JSON 字符串?

    正如标题所述 我正在尝试使用 Bootstrap 的 Typeahead js 它需要像这样的 JSON 字符串 var subjects PHP MySQL SQL PostgreSQL HTML CSS HTML5 CSS3 JSON
  • 如何让图表内容区域占据其可用的最大区域?

    非常简单的问题 如何让图表内容区域占据其可用的最大区域 我正在使用 JavaFX 就我而言 我想要有许多基于 true false 的 AreaChartsyAxis 0 1 不幸的是 我找不到如何使用类似方法更改这些图表的内容高度的解决方
  • 如何使用 Maven 将 JavaFX 项目部署到 EXE?

    我希望这个问题看起来并不基础 但尽管研究了几个小时 我还是找不到任何好的文档 我将 Maven 版本 3 3 9 用于我的 JavaFX 版本 11 0 2 和 JDK 13 0 1 项目 并想要构建一个 EXE 做到这一点最简单的方法是什
  • 如何使用java代码获取USB驱动器序列号或元数据

    我用java准备了一个桌面应用程序 我想通过 Pendrive 或任何其他 USB 驱动器来保护它 但我不知道如何使用java代码读取pendrive或usb驱动器 这样我就可以限制应用程序 请帮助我该怎么做 或者对此有其他想法吗 谢谢 就
  • 我可以像“delete[]”那样获取动态分配数组的大小吗?

    我想知道如何delete 知道动态分配数组的大小 并且我发现this问题 还有this微软论坛上的问题 但答案是相似的 事实证明answer is 它通常存储在您分配的内存之前的 头 段中 因此 确切的细节是特定于实现的 在该答案下 其中一
  • 如何使textview文本链接可点击

    Android Studio 2 3 1 我正在尝试创建一些不是 Web 或 html 的文本 而只是一些普通文本 我希望这些文本看起来像一个 Web 链接 单击时可以单击 正文是这样的 Contains 3 reviews 我想让它看起来
  • 将 null 绑定到准备好的语句时发生 Postgres bytea 错误

    我正在使用一个使用 JPA 和 Postgres 数据库的 Java 应用程序 并且我正在尝试创建一个灵活的准备好的语句 它可以处理可变数量的输入参数 一个示例查询可以最好地解释这一点 SELECT FROM my table WHERE
  • 如何给元素添加点击事件?

    我想用纯 JavaScript 不使用 jQuery 向这样的元素添加一个点击事件 所以我没有id但是一个类 a href http example com share class MyClass Yummy a 如果您没有 id 也没有任
  • Angular2 - FormControl 模糊验证

    我正在考虑添加一些基本的电子邮件验证来检查用户是否输入了正确的电子邮件地址 目前使用下面的方法 验证随着用户输入而更新 当输入一个字符后出错时 这看起来很奇怪 validEmail c Control if c value match a
  • Oracle 中一列的前 n 个不同值

    我正在使用一个查询 其中一部分获取特定列的前 3 个 它创建该列的一个不同的子查询 限制为 3 行 然后将这些行过滤到主查询以执行前 3 项操作 WITH subquery AS SELECT col FROM SELECT DISTINC