簡體   English   中英

如果在Oracle SQL中進行累計計數

[英]Doing a Cumulative Count if in Oracle SQL

請參閱附件文件以供參考。 可以說我有一個表CARRIER_RESPONSE ,具有以下字段CarrierShipmentAcceptanceDay

我想獲得每個承運人每天的累計接受計數。

到目前為止,我來到了下面的代碼:

SELECT Carrier
,Shipment
,Acceptance
,Day
,ROW_NUMBER() OVER (
                        PARTITION BY Carrier
                        , Day
                        , Acceptance
                        ORDER BY Day
                    ) AS "Cumulative Count of Acceptance per Day"
FROM CARRIER_RESPONSE

這段代碼為我提供了接受響應= A的行的正確運行計數,但是在接受響應= DI的行上也想顯示接受響應= A的運行計數。

基本上,我想在每行中指出承運人今天已經接受了多少次托運。 這可能嗎?

謝謝,

阿米爾

運營商響應:

運營商響應

一種實現方式-將sum與Analytics子句和窗口一起使用。

SELECT Carrier
,Shipment
,Acceptance
,Day
,sum(Case when Acceptance is not null then 1 else 0 end) OVER (
                        PARTITION BY Carrier
                        , Day
                        ORDER BY Day
                        ROWS between unbounded preceding and current row
                    ) AS "Cumulative Count of Acceptance per Day"
FROM CARRIER_RESPONSE

重新閱讀后,看來您需要同時計算A和D

 SELECT Carrier
        ,Shipment
        ,Acceptance
        ,Day
        ,sum(Case when Acceptance='A' then 1 else 0 end) OVER (
                                PARTITION BY Carrier                                
                                ORDER BY Day                                
                            ) AS "Cumulative Count of Acceptance per Day",
sum(Case when Acceptance='D' then 1 else 0 end) OVER (
                                PARTITION BY Carrier                                
                                ORDER BY Day                                
                            ) AS "Cumulative Count for Deny per Day"
        FROM CARRIER_RESPONSE

我想你要:

SELECT Carrier, Shipment, Acceptance, Day,
       SUM(CASE WHEN Acceptance = 'A' THEN 1 ELSE 0 END) OVER
           (PARTITION BY Carrier
            ORDER BY Day
           ) AS "Cumulative Count of Acceptance per Day"
FROM CARRIER_RESPONSE;

如果Acceptance僅采用值'A'NULL ,則可以將其縮短為:

SELECT Carrier, Shipment, Acceptance, Day,
       COUNT(Acceptance) OVER
           (PARTITION BY Carrier
            ORDER BY Day
           ) AS "Cumulative Count of Acceptance per Day"
FROM CARRIER_RESPONSE;

暫無
暫無

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

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