怎样显示成下面这样的
时间 -------------------- 数目(一周的数据)
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 时间,编号
现在我想让每天的周数据都显示这一周的,并且逻辑像最上面那样的逻辑,我该怎么改?
如何既显示每天的时间有显示一周的总数?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 唯一的小彬哥 2021-09-17 10:54关注
这是修改后的答案: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(*) from 表 group by 时间) b on a.时间 = b.时间 left join (select trunc(TO_DATE(时间,'YYYY/MM/DD'),'iw'),count(*) from 表 where 任务类型 ='周' group by trunc(TO_DATE(时间,'YYYY/MM/DD'),'iw')) b on trunc(TO_DATE(a.时间,'YYYY/MM/DD'),'iw')= c.时间
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 Android STD快速启动
- ¥15 如何使用simulink建立一个永磁同步直线电机模型?
- ¥30 天体光谱图的的绘制并得到星表
- ¥15 PointNet++的onnx模型只能使用一次
- ¥20 西南科技大学数字信号处理
- ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
- ¥30 STM32 INMP441无法读取数据
- ¥15 R语言绘制密度图,一个密度曲线内fill不同颜色如何实现
- ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
- ¥15 用visualstudio2022创建vue项目后无法启动