SQL:帮助使用 GROUP BY (或其他?)来选择 COUNT 个唯一的 PARENT+CHILD+MAX(CREATED_DT) 记录

发布于 2024-12-28 01:48:21 字数 721 浏览 1 评论 0原文

对于以下数据集,我尝试选择 PARENT+CHILD+COUNT 的组合,其中 CREATED_DT 最大。我假设 GROUP BY 是解决这个问题的正确方法,但我没有运气。有什么想法吗?

PARENT  CHILD  COUNT  CREATED_DT    

PARENT1 CHILD1 100    01/17/2012
PARENT1 CHILD1 200    01/16/2012
PARENT1 CHILD2 300    01/14/2012
PARENT1 CHILD2 400    01/15/2012

所需的结果集是记录 1 和 4,即 PARENT1+CHILD1+100 (1/17 > 1/16) 和 PARENT1+CHILD2+400 (1/15 > 1/14)。

如果我这样做:

SELECT PARENT, CHILD, COUNT, MAX(CREATED_DT) FROM TABLE
GROUP BY PARENT, CHILD, COUNT

...那么由于 COUNT 不同,它仍然选择所有 4 行。如果我尝试:

SELECT PARENT, CHILD, MAX(CREATED_DT) FROM TABLE
GROUP BY PARENT, CHILD

...那么我不确定如何返回并获取我现在丢失的 COUNT 。

想法?

For the following data set, I am attempting to select the combinations of PARENT+CHILD+COUNT where CREATED_DT is greatest. I am assuming GROUP BY is the correct way to get at this, but I've had no luck. Any thoughts?

PARENT  CHILD  COUNT  CREATED_DT    

PARENT1 CHILD1 100    01/17/2012
PARENT1 CHILD1 200    01/16/2012
PARENT1 CHILD2 300    01/14/2012
PARENT1 CHILD2 400    01/15/2012

The desired result set is record 1 and 4 -- i.e., PARENT1+CHILD1+100 (1/17 > 1/16), and PARENT1+CHILD2+400 (1/15 > 1/14).

If I do:

SELECT PARENT, CHILD, COUNT, MAX(CREATED_DT) FROM TABLE
GROUP BY PARENT, CHILD, COUNT

...then since the COUNT is different, it still selects all 4 rows. If I try:

SELECT PARENT, CHILD, MAX(CREATED_DT) FROM TABLE
GROUP BY PARENT, CHILD

...then I'm unsure how to go back and get the COUNT that I'm now missing.

Thoughts?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

流心雨 2025-01-04 01:48:21

像这样?

SELECT 
t1.PARENT
, t1.CHILD
, t1.COUNT
, t1.CREATED_DT
FROM TABLE t1
WHERE
t1.CREATED_DT = (SELECT MAX(t2.CREATED_DT) 
              FROM TABLE t2 
              WHERE t1.PARENT = t2.PARENT
              AND   t1.CHILD = t2.CHILD)

Like this?

SELECT 
t1.PARENT
, t1.CHILD
, t1.COUNT
, t1.CREATED_DT
FROM TABLE t1
WHERE
t1.CREATED_DT = (SELECT MAX(t2.CREATED_DT) 
              FROM TABLE t2 
              WHERE t1.PARENT = t2.PARENT
              AND   t1.CHILD = t2.CHILD)
傲世九天 2025-01-04 01:48:21

它可以帮助你吗?

SELECT [PARENT],
       [CHILD],
       [COUNT],
       [CREATED_DT]
FROM   (SELECT [PARENT],
               [CHILD],
               [COUNT],
               [CREATED_DT],
               Row_number() OVER (PARTITION BY [PARENT], [CHILD] ORDER BY
               created_dt desc)
                      AS
               'GroupId'
        FROM   t) a
WHERE  GroupId = 1

Can it be help you ?

SELECT [PARENT],
       [CHILD],
       [COUNT],
       [CREATED_DT]
FROM   (SELECT [PARENT],
               [CHILD],
               [COUNT],
               [CREATED_DT],
               Row_number() OVER (PARTITION BY [PARENT], [CHILD] ORDER BY
               created_dt desc)
                      AS
               'GroupId'
        FROM   t) a
WHERE  GroupId = 1
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文