gpt4 book ai didi

sql-server-2008 - 每组 SQL Server 前 n 个的平均值

转载 作者:行者123 更新时间:2023-12-04 18:23:50 25 4
gpt4 key购买 nike

我正在解决寻找平均处理时间的问题。我试图通过仅对最好的 80% 数据进行平均来消除异常数据。

我正在努力尝试调整现有的每组前 N 个解决方案来执行每组的平均。使用 SQL Server 2008。

以下是表格的示例:

    OpID  |  ProcessMin  |  Datestamp
2 | 234 | 2012-01-26 09:07:29.000
2 | 222 | 2012-01-26 10:04:22.000
3 | 127 | 2012-01-26 11:09:51.000
3 | 134 | 2012-01-26 05:02:11.000
3 | 566 | 2012-01-26 05:27:31.000
4 | 234 | 2012-01-26 04:08:41.000

我希望它为每个 OpID 取 ProcessMin 的最低 80%,并取该数组的平均值。任何帮助将不胜感激!

* 更新 *

给出下表:

OpID  ProcessMin   Datestamp
602 33 46:54.0
602 36 38:59.0
602 37 18:45.0
602 39 22:01.0
602 41 36:43.0
602 42 33:00.0
602 49 03:48.0
602 51 22:08.0
602 69 39:15.0
602 105 59:56.0
603 13 34:07.0
603 18 07:17.0
603 31 57:07.0
603 39 01:52.0
603 39 01:02.0
603 40 40:10.0
603 46 22:56.0
603 47 11:03.0
603 48 40:13.0
603 56 25:01.0

我期望这样的输出:

OptID   ProcessMin
602 41
603 34.125

请注意,由于每个 OpID 有 10 个数据点,因此它只会平均最低的 8 个值 (80%)。

最佳答案

您可以使用ntile

select OpID,
avg(ProcessMin) as ProcessMin
from
(
select OpID,
ProcessMin,
ntile(5) over(partition by OpID order by ProcessMin) as nt
from YourTable
) as T
where nt <= 4
group by OpID

SE-Data

如果 ProcessMin 是一个整数,您可以执行 avg(cast(ProcessMin as float)) as ProcessMin 来获取小数平均值。

关于sql-server-2008 - 每组 SQL Server 前 n 个的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10146643/

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