oracle数据库中过滤查询的使用方法

How to use filter query in oracle database

我在 Postgres 中编写查询并在 Status 中使用过滤器(如 'UP' 和 'DOWN')并且正在工作 fine.I 只是想将相同的查询写入 Oracle。我将 UP 和 DOWN 值放入同一列 Status。我只想计算 Up 和 down 状态的总数以及 Apps 结果的总数。我想将三个总计数值放入此别名列 Tot_App_Name、Status_Up_count、Status_down_count。我该怎么做?

Table:-

CREATE TABLE Application_Status
(
   App_Category   VARCHAR (45) NULL,
   App_Name       VARCHAR (40) NULL,
   DB_name        VARCHAR (40) NULL,
   Server         VARCHAR (200) NULL,
   Provider       VARCHAR (250) NULL,
   Status         VARCHAR (10) NULL,
   Last_Refresh   TIMESTAMP NULL
)

插入的值:-

insert into Application_Status values('app1','abc1','abcd1','abcd1','url11','Up',CURRENT_TIMESTAMP);
insert into Application_Status values('app2','abc2','abcd2','abcd2','url12','Up',CURRENT_TIMESTAMP);
insert into Application_Status values('app3','abc3','abcd3','abcd3','url13','down',CURRENT_TIMESTAMP);
insert into Application_Status values('app4','abc4','abcd4','abcd4','url14','down',CURRENT_TIMESTAMP);
insert into Application_Status values('app5','abc5','abcd5','abcd5','url15','Up',CURRENT_TIMESTAMP);

Postgress查询(想转成oracle):-

select count(*) as "Tot_App_Name",count(*) filter (where "Status"= 'UP') as "Status_Up_count",
    count(*) filter (where "Status"= 'DOWN') as "Status_Down_count" from  "ApplicationStatus"."ApplicationStatus";
            Select * from "Application_Status"."Application_Status";

预期结果:-

Tot_App_Name     Status_Up_count      Status_Down_count
   5                  3                     2

这是一种选择:

select 
  count(*) tot_app_name,
  sum(case when status = 'UP'   then 1 else 0 end) status_up_count,
  sum(case when status = 'DOWN' then 1 else 0 end) status_down_count
from application_status;