沃德天· 2021-09-17 10:24 采纳率: 33.3%
浏览 56
已结题

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

怎样显示成下面这样的
时间 -------------------- 数目(一周的数据)
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 时间,编号
现在我想让每天的周数据都显示这一周的,并且逻辑像最上面那样的逻辑,我该怎么改?

  • 写回答

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(*) 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.时间 
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月26日
  • 已采纳回答 9月18日
  • 修改了问题 9月18日
  • 创建了问题 9月17日

悬赏问题

  • ¥15 Android STD快速启动
  • ¥15 如何使用simulink建立一个永磁同步直线电机模型?
  • ¥30 天体光谱图的的绘制并得到星表
  • ¥15 PointNet++的onnx模型只能使用一次
  • ¥20 西南科技大学数字信号处理
  • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
  • ¥30 STM32 INMP441无法读取数据
  • ¥15 R语言绘制密度图,一个密度曲线内fill不同颜色如何实现
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动