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;
我在 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;