gpt4 book ai didi

sql - 在 T-SQL 的桥表中选择最大组的值/最常见的值

转载 作者:行者123 更新时间:2023-12-01 12:58:48 26 4
gpt4 key购买 nike

我有一个表,代表另一个表中两行之间的“契约(Contract)”。鉴于以下数据,我如何才能为每个最终用户获取最常见的分发服务器?

Contracts

EndUserId | DistributerId | StartDate | EndDate
-----------------------------------------
1 | 8 | ... | ...
1 | 9 | ... | ...
1 | 9 | ... | ...
2 | 8 | ... | ...
2 | 8 | ... | ...
2 | 9 | ... | ...
3 | 8 | ... | ...
3 | 9 | ... | ...

我之后的查询必须返回以下内容:

EndUserId | DistributerId
-------------------------
1 | 9
2 | 8
3 | 8 or 9, it is of no consequence.

提前致谢!搜索在这里没有多大帮助,因为没有样本数据等很难描述目标。

最佳答案

未经测试,但我认为这样做可以:

WITH ContractCounts AS 
( --First Get the counts for each distributer
SELECT EndUserID, DistributerID, Count(*) As ContractCount
FROM Contracts
GROUP BY EndUserID, DistributerID
),
ContractMax AS
( -- Then find out how many contracts the largest distributed for each user had
SELECT EndUserID, Max(ContractCount) As MaxContractCount
FROM ContractCounts
GROUP BY EndUserID
)
-- and finally select only the distributor for each user who's count matches the prior query
SELECT c.EndUserID, MAX(c.DistributerID) AS DistributerID
FROM ContractCounts c
INNER JOIN ContractMax m on m.EndUserID=c.EndUserID AND c.ContractCount = m.MaxContractCount
GROUP BY c.EndUserID

关于sql - 在 T-SQL 的桥表中选择最大组的值/最常见的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8032529/

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