按行和列分组
Group in rows and column
我是 sql 的新手,我有一个无法解决的问题,我有一个视图,它结合了来自执行不同操作的不同表的信息,基本上,简化了,它看起来有点像这样:
Risk_Status Task_Name Completion
---------------------------------------
Green Task1 On Time
Yellow Task2 Delayed
Yellow Task3 On Time
Green Task4 Delayed
Red Task5 Delayed
Yellow Task5 Delayed
Red Task5 On Time
Red Task5 Delayed
我想要完成的是按状态对所有任务进行分组,跟踪属于每个状态的任务数量,并有一列列出所有延迟或按时属于不同状态的任务:
Status Number of Tasks Number of Delayed Tasks
-------------------------------------------------------
Green 2 1
Yellow 3 2
Red 3 2
我已经尝试复制 from 子句中的视图并使其 select 仅延迟 class 处的任务,但它没有给我准确的结果,我不确定还有什么试试。
感谢任何帮助:)
您可以使用条件聚合:
select status, count(*) as NumTasks,
sum(case when completion = 'Delayed' then 1 else 0 end) as NumDelayedTasks
from yourview
group by status;
您好,您可以使用以下查询。
WITH sample_data(riskstatus,taskname,completion)
AS
(
SELECT 'Green','Task1','On Time' FROM dual
UNION ALL
SELECT 'Yellow','Task2','Delayed' FROM dual
UNION ALL
SELECT 'Yellow','Task3','On Time' FROM dual
UNION ALL
SELECT 'Green','Task4','Delayed' FROM dual
UNION ALL
SELECT 'Red','Task5','Delayed' FROM dual
UNION ALL
SELECT 'Yellow','Task5','Delayed' FROM dual
UNION ALL
SELECT 'Red','Task5','On Time' FROM dual
UNION ALL
SELECT 'Red','Task5','Delayed' FROM dual
)
SELECT riskstatus,count(taskname),sum(decode(completion,'Delayed',1,0))
FROM sample_data
GROUP BY riskstatus;
我是 sql 的新手,我有一个无法解决的问题,我有一个视图,它结合了来自执行不同操作的不同表的信息,基本上,简化了,它看起来有点像这样:
Risk_Status Task_Name Completion
---------------------------------------
Green Task1 On Time
Yellow Task2 Delayed
Yellow Task3 On Time
Green Task4 Delayed
Red Task5 Delayed
Yellow Task5 Delayed
Red Task5 On Time
Red Task5 Delayed
我想要完成的是按状态对所有任务进行分组,跟踪属于每个状态的任务数量,并有一列列出所有延迟或按时属于不同状态的任务:
Status Number of Tasks Number of Delayed Tasks
-------------------------------------------------------
Green 2 1
Yellow 3 2
Red 3 2
我已经尝试复制 from 子句中的视图并使其 select 仅延迟 class 处的任务,但它没有给我准确的结果,我不确定还有什么试试。
感谢任何帮助:)
您可以使用条件聚合:
select status, count(*) as NumTasks,
sum(case when completion = 'Delayed' then 1 else 0 end) as NumDelayedTasks
from yourview
group by status;
您好,您可以使用以下查询。
WITH sample_data(riskstatus,taskname,completion)
AS
(
SELECT 'Green','Task1','On Time' FROM dual
UNION ALL
SELECT 'Yellow','Task2','Delayed' FROM dual
UNION ALL
SELECT 'Yellow','Task3','On Time' FROM dual
UNION ALL
SELECT 'Green','Task4','Delayed' FROM dual
UNION ALL
SELECT 'Red','Task5','Delayed' FROM dual
UNION ALL
SELECT 'Yellow','Task5','Delayed' FROM dual
UNION ALL
SELECT 'Red','Task5','On Time' FROM dual
UNION ALL
SELECT 'Red','Task5','Delayed' FROM dual
)
SELECT riskstatus,count(taskname),sum(decode(completion,'Delayed',1,0))
FROM sample_data
GROUP BY riskstatus;