窗函数的确定性排序顺序

2023-12-08

I've a status表,我想获取最新的详细信息。

Slno |   ID | Status | date
  1  |   1  | Pass   | 15-06-2015 11:11:00 - this is inserted first
  2  |   1  | Fail   | 15-06-2015 11:11:00 - this is inserted second 
  3  |   2  | Fail   | 15-06-2015 12:11:11 - this is inserted first
  4  |   2  | Pass   | 15-06-2015 12:11:11 - this is inserted second

我使用窗口函数partition by ID order by date desc获取第一个值。
例外输出:

2  |   1  | Fail   | 15-06-2015 11:11:00 - this is inserted second
4  |   2  | Pass   | 15-06-2015 12:11:11 - this is inserted second

实际输出:

1  |   1  | Pass   | 15-06-2015 11:11:00 - this is inserted first
3  |   2  | Fail   | 15-06-2015 12:11:11 - this is inserted first

根据 [http://docs.aws.amazon.com/redshift/latest/dg/r_Examples_order_by_WF.html],添加第二个ORDER BY列到窗口函数可能会解决问题。但我没有任何其他列来区分行!
还有其他方法可以解决这个问题吗?

编辑:我已经添加slno为了清楚起见,请放在这里。我没有slno如表中所示!

My SQL:

with range as (
  select id from status where date between 01-06-2015 and 30-06-2015
), latest as ( 
  select status, id, row_number() OVER (PARTITION BY id ORDER BY date DESC) row_num
)
select * from latest where row_num = 1

如果你没有slno在您的表中,那么您没有任何可靠的信息首先插入哪一行。表中没有自然顺序,行的物理顺序可以随时更改(通过任何更新或通过VACUUM, etc.)

You could use an 不可靠的技巧:按内部顺序ctid.

select *
from  (
   select id, status
        , row_number() OVER (PARTITION BY id
                             ORDER BY date, ctid) AS row_num
   from   status  -- that's your table name??
   where  date >= '2015-06-01'  -- assuming column is actually a date
   and    date <  '2015-07-01'
  ) sub
where  row_num = 1;
  • 在没有任何其他信息的情况下,哪一行首先出现(这是设计错误首先,修复它!),您可以尝试使用内部保存可以保存的内容元组IDctid
  • 有序序列生成

最初插入时,行将按物理顺序排列,但随着对表或表的任何写入操作,这可能会随时更改VACUUM或其他事件。
这是最后的手段will break.

  • 您提出的查询在多个方面无效:第一个 CTE 中缺少列名称,第二个 CTE 中缺少表名称,...

  • 为此,您不需要 CTE。

更简单的是DISTINCT ON(考虑到ctid同样适用):

SELECT DISTINCT ON (id)
       id, status
FROM   status
WHERE  date >= '2015-06-01'
AND    date <  '2015-07-01'
ORDER  BY id, date, ctid;
  • 选择每个 GROUP BY 组中的第一行?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

窗函数的确定性排序顺序 的相关文章

  • 多态查询的数据库压力

    我在 JPA 中使用了超过 5 个子类的多态抓取 执行的查询如下 explain SELECT ohlcrawbea0 trade time AS trade ti3 11 ohlcrawbea0 avg price AS avg pric
  • Heroku postgresql 数据库名称

    这是我必须查找 heroku 数据库名称的命令 heroku config grep POSTGRESQL 我得到类似于以下的结果 HEROKU POSTGRESQL NAVY URL postgres wxjwilh t email pr
  • ORA-01719: OR 或 IN 的操作数中不允许有外连接运算符 (+)

    运行查询时出现错误 ORA 01719 OR 或 IN 的操作数中不允许有外连接运算符 01719 00000 OR 或 IN 的操作数中不允许使用外连接运算符 原因 or 子句中出现外连接 动作 如果A和B是谓词 要得到 A 或B 的效果
  • “django.core.exceptions.ValidationError”错误

    我正在 Django 中编写一个简单的游戏 所有的事情都是正确的 但是突然 我遇到了以下错误 Django v 1 7 Python v 3 4 我不知道这些代码有什么问题 test alireza alireza test test1 p
  • 有没有办法刷新 Oracle 中 PL/SQL 的输出?

    我有一个从 shell 脚本中调用的 SQL 脚本 需要很长时间才能运行 目前它包含dbms output put line不同点的声明 这些打印语句的输出会出现在日志文件中 但仅在脚本完成后才会出现 有什么方法可以确保脚本运行时输出出现在
  • 哪个 SQL 语句更快? (有与在哪里......)

    SELECT NR DZIALU COUNT NR DZIALU AS LICZ PRAC DZIALU FROM PRACOWNICY GROUP BY NR DZIALU HAVING NR DZIALU 30 or SELECT NR
  • SQL Server 2008插入优化

    我必须将大量行 超过 1 000 000 000 插入到 SQL Server 数据库中 该表有一个 AI Id 两个 varchar 80 列和一个以 GETDATE 作为默认值的小日期时间 最后一项只是为了听觉 但却是必要的 我想知道插
  • 如何使用带有外键的时间尺度超表并保持一对多关系?

    我正在尝试创建一个考虑到最小冗余的数据库 我们想使用 timescaledb 超级表 我运行 postgreSQL v 12 和 timescaledb v 1 7 4 创建表的 postgreSQL 代码如下 您可以在此处查看 dbdia
  • Sql Server 2008 强制日期从 dd/MM/yyyy 到 MM/dd/yyyy

    我在 sql server 2008 上遇到了一个奇怪的问题 我试图用dd MM yyyy格式写入sql server 2008 但是插入日期后它会自动转换为MM dd yyyy 注意 我的电脑时钟格式是dd MM yyyy 我的报告查看器
  • 具有多个表的 SQL select 语句

    给出以下两个表 Person table id pk first middle last age Address table id pk person id fk person id street city state zip 如何创建返回
  • 使用 pyscopg2 和 PostgreSQL 将日期时间插入数据库

    我在使用 pyscopg2 的 insert 语句将日期时间戳插入 SQL 数据库时遇到问题 下面的代码所做的是每次按下按钮时 它都应该在数据库中插入一行 其中包含buildingID 只是文本 以及按下按钮时的日期和时间 我只是不知道如何
  • INSERT INTO 存储过程的输出

    我正在编写一个存储过程 首先在表中插入一个新行 然后 另一个查询需要此查询生成的 ID 是否可以使用 OUTPUT 访问预先生成的 ID 这就是我到目前为止所做的 这几乎是一个猜测 但没有成功 ALTER PROCEDURE dbo add
  • TFS 2017 如何使用 SQL 查询工作项

    我正在寻找一种使用 SQL 选择直接从 TFS 的 SQL 数据库查询工作项的方法 对于 TFS 2010 您可以使用一些数据库视图来实现此目标 TFS2010 如何在关系仓库上使用 SQL 查询工作项 https blogs msdn m
  • SQL LIKE 实际上是如何工作的

    例如 当我有这样的字符串时 ABBBCSLAK JDK ASAAAAFJKDSKJFSDF 当我像这样使用 SQL 时 SELECT FROM table WHERE column LIKE JDK 当服务器访问 JDK 时到底会发生什么
  • 如何在SQL Server数据库的所有表的所有列中搜索特定字符串?

    我们想要在拥有大约 120 个表的所有数据库中搜索一个字符串 即 Hello World 我们考虑过像 mysql dump 一样进行转储 但它以奇怪的 bak 格式出现 应在每个表的每一列中进行搜索 任何类型的脚本都可以做到这一点 或者这
  • 在 VBScript 中的 SQL 字符串中使用 Excel 命名范围

    我已经在这里和谷歌上搜索过 但仍然无法解决我的问题 我正在尝试在我的中等效地使用 Excel 的命名范围 vbs文件 下面的代码可以在 excel 中的 VBA 中运行 但我无法让它在 vbs file ThisWorkbook Sheet
  • 如何使用 SQL 计算一条路线的行驶次数?

    我需要确定在给定的日期范围内每辆车行驶特定路线的次数 但建立在数据库之上的 GPS 管理软件没有此功能 该数据库包含多个存储 GPS 路线和位置数据的表 路线由多个位置和序列号组成 位置是附加到名称的一组上限和下限纬度 经度值 车辆每分钟将
  • LINQ 中的日期差异逻辑

    我尝试从两个不同的数据库表访问数据 然后使用 C 中的 LINQ 将它们连接到两个字段上 我相信我有一个逻辑合理的整体工作方法 我遇到的部分问题是 我在连接两个表之前过滤了它们的数据 因为这些表的数据太多 会导致崩溃 主要问题是 对于其中一
  • SQL Server 上的聚合(分组依据)如何工作?

    SQL Server如何实现group by子句 聚合 以执行计划作为灵感这个问题的 https stackoverflow com questions 1465827 select at onece query select p id D
  • 仅将新记录从 AWS DynamoDB 复制到 AWS Redshift

    我看到有大量的示例和文档可将数据从 DynamoDB 复制到 Redshift 但我们正在研究增量复制过程 其中仅将新行从 DynamoDB 复制到 Redshift 我们每天都会运行这个复制过程 因此不需要每天杀死整个红移表 有人对这个话

随机推荐

  • 动态更新 gtk.VBox

    我经常使用这个网站来解决我在 Python 编程时遇到的小问题 这次 不知怎的 我找不到适合我情况的解决方案 所以 这是我的问题 我想动态添加条目到 gtk VBox 小部件 问题是它没有按照我想要的方式工作 我只有一个按钮 其操作是将附加
  • 如何在 Xamarin Forms 编辑器中设置占位符和占位符颜色

    如何设置占位符文本 and 占位符颜色 in Editor in Xamarin 表单 它没有默认的功能或属性 如何自定义它 参考文档 Xamarin 表单编辑器 为此 您将需要一个自定义渲染器 这是 Android 自定义渲染器 您将需要
  • res.write 无法正常工作。它显示包含 HTML 标签的输出

    我正在使用 API 和 Express 制作一个简单的 Web 应用程序 但我得到的输出与预期不同 我的输出包含文本 包括HTML tags 这是我的代码 const express require express const https
  • Access + VBA + SQL - 如何使用表中的条件将多个查询导出到一个 Excel 工作簿中,同时导出多个工作表

    我需要一些帮助才能将多个查询导出到一个 Excel 工作簿中 但是 多个工作表吗 使用 MS Access VBA 中的表中的条件 附件是供参考的数据库 表名称 Tbl Final 下面列出的列 System User ID 用户类型 St
  • 如何更新 git clone --mirror?

    我创建了一个 git 存储库来镜像实时站点 这是一个非裸 git 存储库 git clone mirror ssh email protected path to repo 现在 为了使此镜像克隆更新其远程源的所有更改 我必须使用哪个或哪些
  • 当从外部分配值时,更改事件不适用于文本框

    我有一个文本框和一个按钮 当我单击该按钮时 它会在文本框中设置特定值 我想每当文本框的值发生更改时提交页面 请检查here HTML
  • .NET 3.5 运行时和 .NET 4 运行时兼容性

    是否可以使用 NET 4 构建的插件运行基于 NET 3 5 构建的应用程序 您将需要重建 不完全正确 请检查更新 NET 3 5 应用程序以定位 NET 4 0 因为默认情况下它将在 NET 2 0 运行时启动 而该运行时将不支持该插件
  • 当我检查特定分支是否已提交时,为什么我的提交后挂钩条件语句不起作用?

    我通过 Windows 服务器上的 VisualSVN Server 运行 Subvbersion 并设置了一个主干和三个分支的存储库 分支是开发 测试和生产 我有一个提交后钩子 我想运行它在提交运行后更新工作副本 但我只希望它在提交是在开
  • Facebook iOS SDK 3.0 - 在 FBFriendPickerViewController 中保存并重新加载 .selection

    FBFriendPickerViewController 看起来非常简单 但是 它可能不适合我想要的场景 本质上 我想将用户选择的朋友列表保存到磁盘 在随后的应用程序启动时 我想将 FBFriendPickerViewController
  • 使用nodejs以块的形式发送数据

    我对 Nodejs 很陌生 正在开发 Angular 4 应用程序的后端 问题是后端生成响应的全部数据的速度相当慢 我想在数据可用时立即发送数据 我正在阅读有关 RxJS 的内容 但我真的不知道如何在节点中使用它 你能帮助我吗 也许您正在寻
  • 机器特定的 HttpWebResponse 超时

    我有一个非常奇怪的机器特定问题 在某些机器上 下面的代码可以工作 而在其他机器上 它会冻结 直到 GetResponse 调用引发超时异常 string url https myserver myimage png System Net S
  • 如何根据两列查找值(列值不唯一)

    这是我的数据 File1 Name School Age Weight Jack St John 15 Jack St Mary 14 Jack St Michael 12 Mary St John 16 Mary St Mary 12 M
  • 在闪亮的应用程序中使用bigrquery auth

    我想创建一个闪亮的应用程序 它利用 bigrquery 连接到 BigQuery API 并运行查询 我使用以下代码来执行查询 library bigrquery project lt PROJECT ID put your project
  • Google Sheet SUMIF 不是求和范围

    我试图根据行值大于 0 的条件对所有行求和 但是 该公式仅计算第一行并忽略范围的其余部分 我在另一个电子表格上遇到了这个问题 但我在一个新电子表格上隔离了这个问题 以便向您展示并提出问题 答案应该是 B1 5 美元 B2 15 美元 B3
  • 捕获 PyQt 中的任何异常

    我在 PyQt 中创建了一个 GUI 应用程序 我想与很多人分享 有时我会遇到意想不到的异常 并且我认为这是理所当然的 在每次异常之后我都会改进我的代码 并且它会变得越来越好 我使用记录器来记录这些异常 并使用 PyQt 静默异常的特殊钩子
  • 无法通过 Flutter 中的 API 调用呈现 DropdownMenu 中的数据

    我正在尝试在我的项目中创建一个下拉菜单 其中需要在列表中显示的数据源自 API 调用 其响应如下所示 但是 我收到以下错误消息 并且我不知道如何解决此问题 There should be exactly one item with Drop
  • 将 CString 转换为 CTime

    In 智能设备MFC应用 我已成功转换CTime to CString 现在我想把它转换回来 CString to CTime 我怎样才能做到这一点 Use COleDateTime ParseDateTime CString 然后将其转换
  • PrimeFaces 数据表滚动条位于所需位置

    当我添加新记录 在默认可视区域之外 并更新数据表时 我有一个包含 100 多条记录的可滚动数据表 数据表从记录 0 加载 而我需要前一个位置的数据表视图 我的数据表代码
  • App.xaml 的 EventSetter 上出现错误 CS1061

    我试图通过我的代码创建一个元素并为其关联一个样式 还关联其 EventSetter 该样式工作完美 但当我尝试运行该函数时它不起作用 App xaml
  • 窗函数的确定性排序顺序

    I ve a status表 我想获取最新的详细信息 Slno ID Status date 1 1 Pass 15 06 2015 11 11 00 this is inserted first 2 1 Fail 15 06 2015 1