[英]Doing a Cumulative Count if in Oracle SQL
請參閱附件文件以供參考。 可以說我有一個表CARRIER_RESPONSE
,具有以下字段Carrier
, Shipment
, Acceptance
, Day
我想獲得每個承運人每天的累計接受計數。
到目前為止,我來到了下面的代碼:
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.