【发布时间】:2017-05-22 18:38:16
【问题描述】:
我想知道是否可以在为每个 DonorType 组运行中值计算时获得一些帮助。通过查询,我得到的只是所有值的中位数,而不是每个案例分组的值。我尝试了几件事并环顾四周,但我被卡住了。
这是我得到的:
SELECT DonorType = CASE WHEN [Criteria1] THEN 'AutoRecurring'
WHEN [Criteria2] THEN 'ManualRecurring'
ELSE 'NonRecurring' END,
COUNT(DISTINCT AccountNumber) AS TotalDonors, MIN(TotalDonationAmount) AS MinAmount,
MAX(TotalDonationAmount) AS MaxAmount, AVG(TotalDonationAmount) AS AvgAmount,
((SELECT MAX(TotalDonationAmount)
FROM (SELECT TOP 50 PERCENT TotalDonationAmount
FROM #TempDonors
ORDER BY TotalDonationAmount) AS BottomHalf)
+ (SELECT MIN(TotalDonationAmount)
FROM (SELECT TOP 50 PERCENT TotalDonationAmount
FROM #TempDonors
ORDER BY TotalDonationAmount DESC) AS TopHalf)) / 2 AS MedAmount
FROM #TempDonors
WHERE TotalDonationAmount > 0
GROUP BY CASE WHEN [Criteria1] THEN 'AutoRecurring'
WHEN [Criteria2] THEN 'ManualRecurring'
ELSE 'NonRecurring' END
非常感谢您的帮助。如果有另一个帖子问这个问题(我确定有,我只是不知道要搜索什么),请务必发布链接 - 对于我无法找到它,我提前道歉。
保重!
【问题讨论】:
标签: sql-server group-by case median