如何查询数据库中用户的排名,但只考虑每个用户的最新条目?

2023-12-05

假设我有一个名为“Scrape”的数据库表,可能设置如下:

UserID (int)   
UserName (varchar)  
Wins (int)   
Losses (int)  
ScrapeDate (datetime)

我试图根据用户的赢/输比对他们进行排名。但是,每周我都会抓取有关用户的新数据,并在抓取表中添加另一个条目。

如何查询按赢/输排序的用户列表,但只考虑最近的条目 (ScrapeDate)?

另外,您认为人们会访问该网站并且刮擦可能正在完成中这很重要吗?

例如我可以有:

1 - Bob - Wins: 320 - Losses: 110 - ScrapeDate: 7/8/09  
1 - Bob - Wins: 360 - Losses: 122 - ScrapeDate: 7/17/09  
2 - Frank - Wins: 115 - Losses: 20 - ScrapeDate: 7/8/09  

其中,这表示到目前为止仅更新了 Bob 的抓取,并且正在更新 Frank 但尚未插入。您也将如何处理这种情况?

所以,我的问题是:

  1. 您将如何处理仅查询每个用户的最新抓取以确定排名
  2. 您认为数据库可能处于更新状态(特别是如果抓取可能需要长达 1 天才能完成)并且并非所有用户都已完全更新这一事实很重要吗?如果是这样,你会如何处理?

谢谢您,也感谢您就我的相关问题给我的答复:

当从网页上抓取大量统计信息时,我应该多久将收集到的结果插入到数据库中?


这就是我所说的“每组最大的”问题。它每周在 StackOverflow 上出现几次。

我使用外连接技术解决此类问题:

SELECT s1.*, s1.wins / s1.losses AS win_loss_ratio
FROM Scrape s1
LEFT OUTER JOIN Scrape s2
  ON (s1.username = s2.username AND s1.ScrapeDate < s2.ScrapeDate)
WHERE s2.username IS NULL
ORDER BY win_loss_ratio DESC;

这将为每个用户名仅返回一行 - 中具有最大值的行ScrapeDate柱子。这就是外连接的用途,try匹配s1与其他一些行s2使用相同的用户名和更大的日期。如果没有这样的行,则外连接对所有列都返回 NULLs2,然后我们知道s1对应于给定用户名的最大日期的行。

当您正在进行部分完成的抓取时,这也应该有效。

这种技术不一定像其他答案给出的 CTE 和 RANKING 解决方案那么快。您应该两者都尝试一下,看看哪种更适合您。我更喜欢我的解决方案的原因是它适用于任何 SQL 风格。

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

如何查询数据库中用户的排名,但只考虑每个用户的最新条目? 的相关文章

  • 带有检查约束的自定义函数 SQL Server 2008

    我使用 SQL Server 2008 并且有两个现有表 venues and events 我正在尝试创建一个带有检查约束的自定义函数 以确保event expected attendance栏目中的events表总是小于或等于venue
  • 使用 SQL 压缩时间段

    我有一个很大的数据集 出于这个问题的目的 它有 3 个字段 组标识符 从日期 To Date 在任何给定的行上From Date将永远小于To Date但在每一组中 由日期对表示的时间段 没有特定的顺序 可以重叠 包含在另一个中 甚至是相同
  • 使用 Microsoft SQL Server 管理复制表

    需要使用复制表Microsoft SQL Management Studio 2008 TABLE 还需要复制所有表行 主键 ID 在 SSMS 中打开一个新的查询窗口 然后执行如下操作 SELECT INTO NewTable FROM
  • ORACLe PROCEDURE - AUTHID 仅允许在模式级别

    在尝试通过过程创建表时 我遇到了类似的错误 错误 73 9 PLS 00157 仅在架构级程序上允许 AUTHID PROCEDURE BCKUP AUTHID CURRENT USER AS statusmsg VARCHAR2 400
  • Java - 如何批量插入和更新数据库

    我想在一个PreparedStatement 中批量处理多种类型的数据库调用 这可能吗 有没有办法做类似的事情 PreparedStatement pstmt connection prepareStatement 哪里的 可以是INSER
  • SQL Server:如何权限模式?

    受到我见过的各种与模式相关的问题的启发 所有权链 http msdn microsoft com en us library ms188676 aspx如果存储过程和表都在同一架构中 则允许我对存储过程授予 EXECUTE 权限 而无需对我
  • TSQL - 如何在 BEGIN .. END 块内使用 GO?

    我正在生成一个脚本 用于自动将更改从多个开发数据库迁移到登台 生产 基本上 它需要一堆更改脚本 并将它们合并成一个脚本 将每个脚本包装在一个IF whatever BEGIN END陈述 然而 有些脚本需要GO语句 以便 SQL 解析器在创
  • 如何中止触发器中的多行插入

    使用 SQL Server 2005 我已经声明了一个触发 AFTER INSERT UPDATE 的触发器 在这个触发器中 我使用 WHILE 和 CURSOR 在 INSERTED 表的行上循环 当我发现一行不满足特定条件时 我希望触发
  • SQLite:具有四个表的完全外连接

    编辑 可以找到这个问题的扩展here https stackoverflow com questions 47667304 sqlite full outer join with four tables with 30 columns 我想
  • Go SQL查询不一致

    我在执行查询时遇到一些非常奇怪的不一致 并且想知道是否有人知道原因 想象一下我有一个定义如下的结构 type Result struct Afield string db A Bfield interface db B Cfield str
  • SQL 内连接两个具有相同列名的表

    我有两个表 其列数不同 我不知道有多少列或名称是什么 例如表 A 和表 B TableA ID B ID variable TableB ID variable Query SELECT TableA TableB FROM TableA
  • 在 ASP.NET 中将多个字段绑定到列表框

    我对 ASP NET 尤其是 LINQ 和 SQL 还很陌生 假设我有一个表 员工 其中包含 姓氏 名字 和 ID 字段 我想将其绑定到列表框 我希望列表框显示其内容 例如 LASTNAME FIRSTNAME 并且我希望每个项目的值为 I
  • SQL链接服务器查询非常非常慢

    我正在通过链接服务器从视图中提取大量数据 我使用的是 SQL Server 2012 链接服务器是 SQL Server 2008 我的选择语句是 SELECT INTO MY LOCAL TABLE FROM SELECT FROM LI
  • SQLite 性能基准 - 为什么 :memory: 这么慢...只有磁盘速度的 1.5 倍?

    为什么 sqlite 中的 memory 这么慢 我一直在尝试查看使用内存中的 sqlite 与基于磁盘的 sqlite 是否可以获得任何性能改进 基本上我想用启动时间和内存来换取非常快速的查询not在应用程序过程中击中磁盘 然而 以下基准
  • 使用git在测试和生产环境之间同步数据库

    我正在尝试在 php mysql 应用程序的开发过程中实现 git 到目前为止 我已经设置了 git repos 并且我们正在使用本地计算机进行测试 并且我们成功地将其用于文件 但我真的不知道如何处理数据库 服务器上有一个 cron 脚本
  • 播种方法是插入具有 NULL 值的附加实体

    我突然出现这种奇怪的行为 我在版本控制 tfs 中比较了我的文件 以确保我没有更改任何内容 也没有发现任何不同 我正在用一些元数据播种我的数据库 我发现它有一个我以前从未见过的非常奇怪的行为 我正在插入一个实体 产品 它会插入该实体2 ti
  • 在 MongoDB 中查找 7 天前的记录

    我有一个包含对象的集合 如下所示 1 id ObjectId 551c6605e4c6ac495c923aab sender id ObjectId 551c6605e4c6ac495c923aac rep sender id 38 sen
  • 数据库设计 - 何时拆分表?

    有时创建一个单独的表会产生更多工作 我是否应该将其拆分 例如 在我的项目中 我有一张客户表 每个客户对每种产品都有自己的特殊价格 只有5种产品 未来不会计划更多产品 每个客户也有一周中公司向他交付产品的独特日子 当日期和产品价格是客户表中的
  • 检查SQL Server数据库表中是否存在表或列

    在 SQL Server 数据库中创建列或表之前 我想检查所需的表和 或列是否存在 我已经四处搜寻 到目前为止发现了两种方法 我不想使用存储过程 通过使用SqlCommand ExecuteScalar 方法并捕获异常来确定表 列是否存在
  • CROSS APPLY WHERE 子句在交叉应用之前或结果之后起作用吗

    我正在做一种我们在一个内部应用程序中需要的自定义模糊匹配算法 我正在努力加快速度 当我对模糊函数进行交叉应用以查找建议的匹配项时 我不想搜索不必要的数据 这是函数 select top 5 Manufacturer Manufacturer

随机推荐

  • PySpark:将 SchemaRDD 映射到 SchemaRDD

    我正在将 JSON 对象文件作为 PySpark 加载SchemaRDD 我想更改对象的 形状 基本上 我将它们展平 然后插入到 Hive 表中 我遇到的问题是以下返回PipelinedRDD not a SchemaRDD log jso
  • numberOfRowsInSection 在 Alamofire 连接之前调用

    我通过 Alamofire 获取数据viewDidLoad 然后将其放入answerArray中 然而 在 Alamofire 连接之前 numberOfRowsInSection被调用并返回0 如何先通过Alamofire获取数据 然后获
  • PhoneGap 添加 Facebook Connect 插件

    我想添加com phonegap plugins facebookconnect到我的 PhoneGap 构建 Android 应用程序 但我无法做到这一点 在文档网站中他们说要添加
  • 如何杀死Python中的子进程

    我有代码在 Linux 电脑上运行网络摄像头 使用gst launchcommand 当我终止该进程时 网络摄像头窗口不会关闭 但程序停止运行 我希望网络摄像头窗口也关闭 你能帮我解决这个问题吗 import subprocess impo
  • 又是 C 定时器和线程

    有人可以帮助我使用一个可以检查计时器 check timer 结果的函数和另一个在计时器过期时重置该计时器 reset timer 的函数来完成我的代码吗 include
  • 使用 Gson 将 XML 文件转换为 Json

    我发现网上和这里的许多教程也参考了net sf json将 xml 文件转换为 json 对象的库 但是 我想要一个最好使用 Gson 的替代方案 是否可以 我没有为 XML 文件定义明确的 Java 类 但是 我只想将 xml 文件转换为
  • PyQt MimeData 文件名

    我本质上是在重复评论中提出的一个问题 但没有回答 PyQt 获取应用程序中删除的文件的文件名 我希望能够做的就是转换 pyqt 中文件删除事件的输出 当前如下所示 file id 6571367 661326进入一个actual file
  • Go XML 解组节点 N 的属性 X

    我想将特定节点 N 的属性 X 的值解组到结构字段 像这样的事情 var data a b Something b a type A struct Id string xml id attr A ID Name string xml B i
  • java axis Web服务客户端在多个服务上setMaintainSession(cookie?)

    我正在实现一个 Web 服务的客户端 维护 Web 服务的人有点反应迟钝 我使用 axis 和 WSDL2Java 来生成 java 类 我可以在他们的身份验证服务上调用他们的登录方法好的 然后获取一个 sessionId 例如 z4zoj
  • 检索 OWL 交集类隐含的超类

    OWL 本体可能有 A B 和 C 类以及公理 以 DL 表示法表示 A sqsubseteq B C 或近似曼彻斯特 OWL 语法 A 子类 B and C A 是 B 的子类 A 是 C 的子类在逻辑上是正确的 但是三元组 A rdfs
  • 捕获非标准 Powershell CmdLet 输出以进行流量控制

    目前正在尝试利用 MS 发布的 Team Foundation Server Power Tools 包中的 cmdlet 构建脚本 我正在尝试根据 的成功或失败来流动命令逻辑 更新 TfsWorkspace但是我似乎无法从调用中获取返回代
  • 如何从windows(v10)上彻底卸载Android Studio?

    我已经看过了this问题 但这是针对 Mac 操作系统的 我正在使用Windows 每次我创建一个新项目或尝试build rebuild项目冻结了 我已经安装了最新版本 9 10 2016 但事情正在变得更糟 我想完全删除它并安装它 就像我
  • 概率多项选择测试,sliderInputs 总和为 1 约束

    我正在开发一个小shinyapp要进行概率多项选择测试 请参阅贝尔纳多 1997 对于测试中的每个问题 都会有 4 个可能的答案 每个参与者都应该为每个选项分配一些值 以反映他们对每个选项都是正确答案的信念程度 我正在使用以下命令记录此输入
  • 嵌套对象初始值设定项语法

    Resharper 刚刚向我建议了以下重构 Constructor initializes InitializedProperty but the UninitializedSubproperty is uninitialized var
  • 最近 VSO 更新后,将 Ranorex CodedUI 测试链接到 MTM/VSO 2013 CI 时出现问题

    我们已经建立了 CI 流程 将 118 个 Ranorex 测试用例链接到 MTM 测试用例 并在专用自动化 VM 上运行它们 该 VM 由 Visual Studio 中的定时构建触发 CI 流程仍然正常工作 但我刚刚尝试添加另一个测试
  • 如何在 C# 中计算整数的除法和模数?

    如何在 C 中计算整数的除法和模数 这是来自MSDN 文档 当您将两个整数相除时 结果始终是一个整数 例如 7 3 的结果是 2 要确定 7 3 的余数 请使用余数运算符 int a 5 int b 3 int div a b quotie
  • 递归函数中的 Catch 块重复执行

    我有一个递归函数 用于从 AWS 上的 CodeCommit 存储库获取 SQL 文件并按顺序运行它们 我们需要等待上一个文件完成才能运行下一个文件 如果其中一个 SQL 文件失败 我需要 catch 块来返回有关失败文件的信息 目前我在代
  • 如何使用正则表达式删除方括号及其之间的任何内容?

    如何删除方括号之间和方括号本身的文本 例如 我需要 hello quote im sneaky world 成为 hello world 这是我尝试使用的 但它没有达到目的 preg replace str 我刚刚结束 hello quot
  • 处理外部文件的 getResourceAsStream

    我的 getResourceAsStream 方法有问题 由于目录错误 它返回 null 问题是我不知道如何定义目录 我的项目结构看起来像这样 Project src com package ExampleClass java dll My
  • 如何查询数据库中用户的排名,但只考虑每个用户的最新条目?

    假设我有一个名为 Scrape 的数据库表 可能设置如下 UserID int UserName varchar Wins int Losses int ScrapeDate datetime 我试图根据用户的赢 输比对他们进行排名 但是