gpt4 book ai didi

SQL - 查找唯一的最小值和关联的列

转载 作者:行者123 更新时间:2023-12-04 23:47:05 24 4
gpt4 key购买 nike

我有一组数据如下,显示了谁用记录做了什么的历史。每条记录的唯一标识符显示在“ID”中,“Rec No”是分配给与记录的每次交互的序号。

ID  Rec No  Who Type
1 1 Bob New
1 2 Bob Open
1 3 Bob Assign
1 4 Sarah Add
1 5 Bob Add
1 6 Bob Close
2 1 John New
2 2 John Open
2 3 John Assign
2 4 Bob Assign
2 5 Sarah Add
2 6 Sarah Close
3 1 Sarah New
3 2 Sarah Open
3 3 Sarah Assign
3 4 Sarah Close

我需要找到所有的“分配”操作。但是,如果某个 ID 中有多个“分配”,我想找到第一个。然后我还想找到做那件事的人的名字。

所以最终从上述日期开始,我希望输出是-

Who Count (assign)
Bob 1
John 1
Sarah 1

我现在的代码是-

SELECT IH.WHO, Count(IH.ID)
FROM Table.INCIDENTS_H IH
WHERE (IH.TYPE = Assign)
GROUP BY IH.WHO

但这给出的输出是-

Who Count (assign)
Bob 2
John 1
Sarah 1

因为它发现 Bob 对 ID 2,Rec No 4 进行了分配。

如有任何帮助,我们将不胜感激。我正在使用 MS SQL。

最佳答案

我想这就是你所追求的:

select 
who, count(id)
from (
select ID, Who, row_number() over (partition by ID order by Rec) [rownum]
from Table.INCIDENTS_H IH
WHERE (IH.TYPE = Assign)
) a
where rownum = 1
group by who

这应该只计算每个 ID 组中的第一个分配(按 Rec 排序)。

关于SQL - 查找唯一的最小值和关联的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6428183/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com