如何既显示每天的时间有显示一周的总数?

如何既显示每天的时间有显示一周的总数?

问题描述:

怎样显示成下面这样的
时间 -------------------- 数目(一周的数据)
2021-09-17 ------------ 12
2021-09-16 ------------ 15
2021-09-15 ------------ 16
2021-09-14 ------------ 18
2021-09-13(周一) -- 20
周一有20个周任务,周二完成了两个显示为18个,周三完成了两个显示为16个,这样怎样才能做到?
数据大概是这样的:
时间 ---------- 编号 ----- 任务类型
2021-09-17 10001 ---- 日
2021-09-17 10002----- 周
2021-09-16 10001----- 周
2021-09-16 10001-----日
我现在的语句:select 时间,编号,count(case when 任务类型=日 then 编号 end) as日数据,count(case when 任务类型=周 then 编号 end) as 周数据 from 数据表 where1=1 group by 时间,编号
现在我想让每天的周数据都显示这一周的,并且逻辑像最上面那样的逻辑,我该怎么改?

这是修改后的答案:Oracle的伪代码
思路是这样的,
1.对表按时间进行group by这样可以得到每天的任务量合计 形成视图B。
2.对表按周的时间进行group by得到每周的任务量合计 形成视图C。
(周的计算用trunc(TO_DATE(时间,'YYYY/MM/DD'),'iw'))这是Oracle写法,这一周的7天调用函数都会得到每周的第一天。
3.原始的表和视图B通过时间左关联得到结果集 得到每日的工作量合计
4.原始的表和视图C左关联,关联条件为将每天的日期转换为周的第一天进行关联,关联后可得到每周工作量合计。

select * from  table a
left join (select 时间,count(*) fromgroup by 时间) b  on a.时间 = b.时间
left join 
(select trunc(TO_DATE(时间,'YYYY/MM/DD'),'iw'),count(*) fromwhere  任务类型 ='周' group by trunc(TO_DATE(时间,'YYYY/MM/DD'),'iw')) b
on trunc(TO_DATE(a.时间,'YYYY/MM/DD'),'iw')= c.时间 

不就是显示剩余任务?int sum = 20; sum -= xxxx;