当前位置: 首页 > 面试题库 >

根据另一个值的总和来查询唯一值,同时将第三个值完全分组

金令
2023-03-14
问题内容

所以我知道这个问题不是一个新问题,但我正在努力解决这个问题,并了解解决此类情况的最佳方法。

假设我有一个假设表’X’,看起来像这样:

GroupID ID (identity)   SomeDateTime
--------------------------------------------
1       1000        1/1/01
1       1001        2/2/02
1       1002        3/3/03
2       1003        4/4/04
2       1004        5/5/05

我想查询它,以便结果集如下所示:

----------------------------------------
1       1002        3/3/03
2       1004        5/5/05

基本上,我想要的是SomeDateTime按我的GroupID列分组的MAX值。更重要的是,我不想按ID列分组,我只想知道与MAX对应的“
ID” SomeDateTime

我知道一个伪解决方案是:

;WITH X1 as (
    SELECT MAX(SomeDateTime) as SomeDateTime, GroupID 
    FROM X
    GROUP BY GroupID
)
SELECT X1.SomeDateTime, X1.GroupID, X2.ID
FROM X1
    INNER JOIN X as X2
        ON X.DateTime = X2.DateTime

但这不能解决DateTime可能不是唯一的事实。像这样加入DateTime似乎很草率。

另一个伪解决方案可能是:

SELECT X.GroupID, MAX(X.ID) as ID, MAX(X.SomeDateTime) as SomeDateTime
FROM X
GROUP BY X.GroupID

但是,不能保证ID实际上会匹配SomeDateTime来自该行的行。

第三个不太有用的选项可能是:

SELECT TOP 1 X.GroupID, X.ID, X.SomeDateTime
FROM X
WHERE X.GroupID = 1
ORDER BY X.SomeDateTime DESC

但是很明显,这仅适用于单个已知的GroupID。我希望能够在GroupID和/或上加入此结果集ID

有人知道任何明智的解决方案吗?窗口函数有什么好的用法?

谢谢!


问题答案:

我认为这会做您想要的。

;WITH X1 
AS 
(
    SELECT SomeDateTime
           ,GroupID 
           ,ID
           ,ROW_NUMBER() OVER (PARTITION BY GroupID
                               ORDER BY SomeDateTime DESC
                               ) AS rn
    FROM X
)
SELECT SomeDateTime
       ,GroupID
       ,ID
FROM X1
WHERE rn = 1


 类似资料:
  • 问题内容: 在Mysql中: 我表中的城市有重复的值: 座席城市: 该表中的数据格式为: 与…一样: 表国家: 我想知道每个国家有多少座城市。喜欢: 因此,我有2个查询: 但是此值应来自: 现在,如何获得所需的表? 问题答案: 带有: 结果:

  • 我试图用Python复制我的Stata代码,我被指向熊猫的方向。然而,我很难思考如何处理数据。 假设我想遍历列标题“ID”中的所有值。如果该ID与一个特定的数字匹配,那么我想更改两个相应的值FirstName和LastName。 在Stata,它看起来像这样: 因此,这将替换 FirstName 中与 ID == 103 到 Matt 的值对应的所有值。 在熊猫身上,我正在尝试这样的东西 不知道该

  • 问题内容: 我正在尝试查询“标签”列中的所有唯一值。标签列中的每一行都可以包含多个值。因此,在不被迫进行规范化的情况下,如何查询多值列? 示例行: 问题答案: 如果最大元素数量是可预测的,则可以使用此方法(请注意,您需要使用,而不是) 看起来有些笨拙,但应该可以完成工作。未经测试,因此,在值之前或之后可能会出现一个逗号逗号

  • 我正在使用React,使用NodeJS将数据发送到我的PostgreSQL数据库。我的songs表中有一个外键,它引用了albums表中的id。我的问题是,如何将我第一次插入的id返回到第二次插入的相册中?以下是我目前的代码: 我还没有将专辑id添加到我的歌曲插入中。我在等着看如何把唱片id的值输入到我的第二个插页中?

  • 问题内容: 我有两个表,和。 桌子 桌子 我需要一个查询,结果是 问题答案: 这个怎么样?但是,您必须确保Books表中的Authors列始终具有有效数据。

  • 我有一张地图,用户可以在其中选择一个县。我希望它能够做的是返回“成员”在该县的所有“遭遇”。 唯一的问题是,“county”不是我需要为其返回文档的索引字段(“county”是“member”索引中的字段,而我想从“Conferences”索引中返回文档)(它们由“memberId”链接)。 以下是我目前所做的,在一个县中获得成员。 但这将返回该县成员的文档列表。我需要它返回这些文档的member