簡體   English   中英

通過比較 SQL Server 中的兩行來計算列之間的平均值

[英]Calculate Average between columns by comparing two rows in SQL Server

我有下表

BidID AppID AppStatus   StatusTime
    1   1   In Review   2019-01-02 12:00:00
    1   1   Approved    2019-01-02 13:00:00
    1   2   In Review   2019-01-04 13:00:00
    1   2   Approved    2019-01-04 14:00:00
    2   2   In Review   2019-01-07 15:00:00
    2   2   Approved    2019-01-07 17:00:00
    3   1   In Review   2019-01-09 13:00:00
    4   1   Approved    2019-01-09 13:00:00

我想做的是首先通過以下邏輯計算statusTime分鍾差異的平均值

首先按 BidID 分組,然后按 AppID 分組,然后計算 In Review 和 Approved AppStatus 之間的 StatusTime 之間的時間差

eg
First Group BidID,Then group App ID

, 然后首先檢查審核狀態並查找下一個已批准狀態,然后必須計算日期之間的最小差異

BidID  AppID    AppStatus                                          BidAverage
1 ->   1,2  ->  For App ID 1(2019-01-02       1hour                  1.5
                15:48:42.000 - 2019-01-02 
                12:33:36.000)
                For App ID 2(2019-01-04       2hour
                10:33:12.000 - 2019-01-04 
                10:33:12.000)
2->    2  ->    For App ID 2(2019-01-04       1                       1
                10:33:12.000 - 2019-01-04 
                10:33:12.000)
3->     1->     No Calculation since no Approved           

4->     1->    No Calculation since no In Review before Approved

Final Average (1.5 + 1) / 2 = 1.25 for the table

不包括星期六的時差我已經使用大衛的建議算出了時差排除周末

我不知道如何檢查 AppStatus 是否首先在審核中,然后是批准,然后只計算時間差,如果在 BidID 3 中沒有批准,則不要在平均計算中使用它,然后在整個過程中對其進行平均APPId,然后是 BidID

謝謝

我認為您可以簡單地使用min()max()來獲取出價/應用對的時間。 剩下的就是聚合和更多的聚合。

您描述的處理似乎是:

select avg(avg_bid_diff)
from (select bid, avg(diff*1.0) as avg_bid_diff
      from (select bid, appid,
                   datediff(second, min(starttime), max(statustime)) as diff
            from t
            where appstatus in ('In Review', 'Approved')
            group by bid, appid
            having count(*) = 2
           ) ba
      group by bid
     ) b;

這做出了與提供的數據一致的假設——投標/應用對的狀態沒有重復,並且批准總是在審查之后。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM