精华内容
下载资源
问答
  • SQL按时间分段分组统计数据

    万次阅读 2018-07-19 14:22:36
    sql按照时间分段分组,显示及统计分段数据,最后获取总行数: 下面sql条件48表示时间段数(一天48个0.5小时即半小时分段统计,以此类推修改);--注释了查询条件即只统计错误或统计时间限制(hh24miss)内...

    sql中按照时间分段分组,显示及统计分段数据,最后获取总行数:

    下面sql条件中48表示时间段数(一天48个0.5小时即半小时分段统计,以此类推修改);--注释了查询条件即只统计错误或统计时间限制(hh24miss)内的数据;最后0和500分别为分页起止数。
    查询行数据

    select *
      from (select rownum as rn, a.*
              from (select to_char((d.timepoint - 1 / 48),'yyyy-mm-dd hh24:mi:ss') starttime,       --临时表d存储了分好了的今天的各时间段
                           to_char(timepoint,'yyyy-mm-dd hh24:mi:ss') endtime,
                           t.jobid,
                           sum(count) updateTimes,
                           sum(decode(status, 2, 1, 0)) failTimes,
                           sum(cost) totalCost,
                           sum(rowsize) updateSize
                      from kdgs_realtime_log t,
                           (select to_date('20171017', 'YYYYMMDD') + 1 -
                                   (level - 1) / 48 timepoint
                              from dual
                            connect by level <= 48) d
                     where t.jobid = 1000009
                       and t.kddate = 20171017
                       and to_date(t.updatetime, 'YYYYMMDDHH24MISS') <
                           d.timepoint
                       and to_date(t.updatetime, 'YYYYMMDDHH24MISS') >=
                           d.timepoint - 1 / 48
                    --        AND t.status = '2'
                    --and substr(t.updatetime,9,6) >=161010
                    --and substr(t.updatetime,9,6) <=183000
                     group by d.timepoint, t.jobid
                     order by starttime) a
             where rownum <= 500) tt
     where tt.rn > 0

    总行数:

    select count(1)
      from (select count(1)
              from kdgs_realtime_log t,
                   (select to_date('20171017', 'YYYYMMDD') + 1 - (level - 1) / 48 timepoint
                      from dual
                    connect by level <= 48) d
             where t.jobid = 1000009
               and to_date(t.updatetime, 'YYYYMMDDHH24MISS') < d.timepoint
               and to_date(t.updatetime, 'YYYYMMDDHH24MISS') >=
                   d.timepoint - 1 / 48
            --        AND t.status = '2'
            --and substr(t.updatetime,9,6) >=161010
            --and substr(t.updatetime,9,6) <=183000
             group by d.timepoint, t.jobid)

     

    展开全文
  • 时间分段查询,例如查询一天内数据,划分为24小时,求出每小时内数据的平均值或者和。实现方式,利用DATE_FORMAT(date,format)函数,对数据库中的时间字段进行格式化得出每天、每小时、每分钟… 然后通过group by ...

    时间分段查询,例如查询一天内数据,划分为24小时,求出每小时内数据的平均值或者和。

    实现方式,利用DATE_FORMAT(date,format)函数,对数据库中的时间字段进行格式化得出每天、每小时、每分钟… 然后通过group by xxxTimeField进行分组。

    SQL

    SELECT

    history.*,

    CEIL( AVG( history.VALUE ) ) AS avgval,

    SUM( history.VALUE ) AS sumval,

    DATE_FORMAT( FROM_UNIXTIME( history.clock, '%Y-%m-%d %H:%i:%s' ), '%Y-%m-%d %H:00' ) formattime

    FROM

    history

    LEFT JOIN items ON items.itemid = history.itemid

    WHERE

    history.itemid = items.itemid

    AND history.clock >= 1586340120

    AND history.clock <= 1586944920

    AND items.hostid = 11454

    AND FIND_IN_SET( items.key_, 'MEM_RATE,mem_usage,mem_per,system_resource_mem_until' )

    GROUP BY

    formattime

    ORDER BY

    formattime

    DATE_FORMAT( FROM_UNIXTIME( history.clock, ‘%Y-%m-%d %H:%i:%s’ ), ‘%Y-%m-%d %H:00’ ) formattime

    表中的字段为clock,由于是时间戳,需要使用FROM_UNIXTIME函数格式化成Y-m-d H:i:s 格式。

    20200416091628.png

    展开全文
  • 今天拿到一个查询需求,需要统计某一天各个时间段内记录数量。 具体是统计某天9:00至22:00时间段,每半小时内订单数量,最后形成数据形式如下: 时间段 订单数 9:00~9:30 xx个 9:30~10:00 xx个 ... ...

    今天拿到一个查询需求,需要统计某一天各个时间段内的记录数量。

    具体是统计某天9:00至22:00时间段,每半小时内订单的数量,最后形成的数据形式如下:

    时间段          订单数

    9:00~9:30 xx个

    9:30~10:00 xx个

    ...

     

    如果说是按每个小时来统计订单数量,这个是比较简单的,只要将订单表中的OrderTime字段中的小时取出,然后根据每个小时的值进行group by就可以了。

    select T.timehour,count(T.orderid) as number from

    (

    select o.orderid,datename(hh,o.ordertime) as timehour from orders as o 

    where o.ordertime<'2013-10-20 22:00' and o.ordertime>'2013-10-20 9:00'

    ) as T

    group by T.timehour

    order by timehour asc

     

    但是如果要实现上面的那种查询就有点麻烦了。我想到的一种实现方案是:取出每个订单的时间字段中的“小时和分钟”,将这个时间转换为距凌晨的分钟数。如:9:00转换后就是540,9:30转换后就是570。

    计算的过程是:

    1、取定一个基线值:base=540(9:00)

    2、每条条订单记录的分钟数设为:timehour

       分组编号:groupid=(timehour-base)/30

     

    这样可以将各个时间段内的时间统一到一个分组编号中去。如下:

    时间值 groupid     

    9:02     0

    9:23 0

    9:30 1

    9:31 1

    10:01 3

    ..

     

    这样一来,就把各个时间段内的时间转换成对应的某一个分组编号了,这样我们就可以对每个groupid进行分统计每个组内的订单数了。

    时间段          groupid

    9:00~9:30 0

    9:30~10:00 1

    10:00~10:30 2

    ..

     

    下面是完整的sql语句:

    select T.groupid,count(T.orderid) as number from

    (

    select o.orderid,o.ordertime,((datename(hh,o.ordertime)*60+datename(mi,o.ordertime))-540)/30 as groupid from orders as o 

    where o.ordertime<'2013-10-20 22:00' and o.ordertime>'2013-10-20 9:00'

    ) as T

    group by T.groupid

    order by groupid

     

    现实案例:查询20200119-CCT 9:00-18:00分时段的进线数量,已每半个小时为单位;完整sql如下:

    select T.groupid,COUNT(T.队列) as 进线数量 from

    (

    select o.队列,o.开始时间,((datename(hh,o.开始时间)*60+datename(mi,o.开始时间))-540)/30 as groupid

    FROM CallInfo20200119 as o

    where 队列 in ('2@default','4@default') AND 开始时间 BETWEEN '2020-01-19 09:00' AND '2020-01-19 18:00'

    ) as T

    group by T.groupid

    order by groupid

    展开全文
  • 编写分段函数子函数 一天早晨,当我在办公室厨房里加热早餐时,我一位同事走进来,我们开始进行一些闲聊。 我要称呼这个同事弗雷迪。 弗雷迪(Freddie)在公司工作了几周,所以自然而然地,我问他情况如何。 从那...

    编写分段函数子函数

    一天早晨,当我在办公室厨房里加热早餐时,我的一位同事走进来,我们开始进行一些闲聊。 我要称呼这个同事弗雷迪。 弗雷迪(Freddie)在公司工作了几周,所以自然而然地,我问他情况如何。 从那以后,他继续说的话一直困扰着我。 他叹了口气,谈到了自己在理解自己正在从事的特定项目中继承的代码库时遇到了麻烦。

    弗雷迪(Freddie)然后花了很多时间告诉我,盯着一个毫无意义的函数的庞然大物如何变得烦躁和疲倦。 我问他是否尝试过与在他之前从事该软件工作的队友进行核对,他对此轻笑着回答,然后说:“(队友的名字)也不知道。 他像我一样专心地盯着它,只是说他没有写。

    与房地美交谈后,我对自己说了两件事。 第一个是,“不要那么做!”。 也就是说,不要像使弗雷迪受苦的人那样。 第二个是“编写更好的功能”。 那是不像那个家伙的唯一方法。 我敢肯定,有无数房地美必须继承,理解和重构软件项目中编写错误的功能。 精心设计的软件会关注小型单位(或方法),例如微观层面的功能,而不仅仅是宏观层面的整体功能。

    我在很短的编码时间内编写了很多错误的函数,因此我开始认真考虑在此特定领域进行改进。 以下是一些我已(并且仍在学习)的指南和方法,可以从经验丰富的专业人员,同事和其他推荐的来源中应用。

    了解功能

    定义事物始终是一个不错的起点。 功能是编程的程序。 如果您正在寻找比这更详细的内容,则必须去Google。 软件系统将在不同程度上包含功能。 可能是您正在开发面向对象设计的软件,其中这些功能将存在于组成系统的类中,而这些功能则根据它们所处的类的状态起作用。 或者您的系统是面向功能的设计,其中系统被分解为一组作用在集中状态的交互功能。 无论采用哪种方法,功能都是存在的,因为我们需要分解解决方案的概念,并且在这种分解的非常低的水平上,我们会发现这些用于特定目的的小单元。

    函数应该很小

    保持较小的体积可使函数更易于阅读,理解,测试和调试。 我不会给你一个神奇的数字。 一些专家会说不超过15条线,其他专家会说不超过25条线。这可能是您必须在团队中决定的事情。 重要的是要记住保持功能小的原则的原因。

    可读性 :一个函数通常将具有一个签名和一个块代码,该代码在调用或调用该函数时执行。 该函数块中的代码行较少,有助于轻松读取并了解该函数应该做什么。

    可理解性 :较小的功能有助于减少偏离功能主要目的的可能性。 函数的概念或目的越线性,就越容易理解。

    可测试性 :简短的方法变化少,这意味着它们更易于测试

    这是一个旨在检查承载令牌有效性的函数示例:

    功能应该干净

    它可能不会比这更加模棱两可了。 但是,这与代码样式,缩进或变量名长度无关。 这是关于可理解性。 弗雷迪(Freddie)是否能够查看您的功能,弄清它的意图并能够进行修改而又省去了几天的工作?

    归结为对代码的可维护性的度量,可维护的代码构成了可维护软件的主要骨干。 我了解这是可以用来定义干净代码的其他属性,这些属性是主观的,您和您的团队可以决定。

    功能应该简单

    我的技术负责人经常对我说:“如果(该功能)需要大量的精力,您将停止并重新考虑您的解决方案”。 在我们的领域中,努力不应该总是受到赞扬,因为努力常常会产生一些复杂的事情。

    “在软件开发中,工作量并不会随着复杂度线性增长,而是呈指数增长。 因此,管理两组四个场景比一组六个场景要容易得多。” 亚伯拉罕·马林·佩雷斯

    如果我们可以基于模块化解决方案编写函数,并减少该函数具有的执行路径,那么弄清它们应该做什么将变得容易得多。 如果不简单地编写代码,则很难理解,而这些误解通常会导致错误。

    这是一个检查接收到的参数是否为字符串数组的函数示例:

    函数应该有一份工作(没有副作用)

    罗伯特·马丁(Robert Martin)在“干净代码”中说得最好,“您的功能有望做一件事……”,因此应该这样做。 产生副作用只会使我们的代码可读性差,因为代码块中的变体不能满足特定的目的。 我们的函数应该基于确定性算法 ,给定一定的输入,它总是返回相同的输出。

    以下面的示例为例,该函数旨在接收特定日期并以带有日期对象的数组的形式返回该日期发生的星期。

    可以说该功能通常具有单一目的。 但是,您可能已经注意到,在某个时候,我们基于两个参数生成一个星期,一个对象(在这种情况下为Moment对象)和一周中的某天(即星期日,星期一,星期二等)。 因此,我们实际上可以从此函数创建一个新函数来简化事物,并使我们的方法的目的更加线性。

    当我们将函数拆分为两个时,我们具有以下内容:

    结果,现在随机程序员可以更轻松地掌握我们函数的意图,为其编写测试用例并在必要时进行修改。

    话虽如此…

    这些准则不是唯一要遵循的准则,但是它们无疑为我们编写函数时帮助我们生成高质量代码奠定了足够好的基础。 此外,编写良好的功能将需要练习,故意进行重构以及另一套方法(同行评审)。 生成这种代码似乎是额外的工作,但这样做的回报很好。 编程教父Edsger Dijkstra说:

    “在编程中,优雅不是必不可少的奢侈品,而是决定成败的质量。”

    不要成为那个家伙,编写更好的功能。

    参考文献:

    罗伯特·马丁的干净代码

    现实世界中可维护的软件

    翻译自: https://hackernoon.com/dont-be-that-guy-write-better-functions-f5423aa01c1f

    编写分段函数子函数

    展开全文
  • 在项目的开发过程,经常会遇到时间的处理,如果不提取封装进行重用,如果在大型项目时间处理较多的情况下,不这样做,可能会出现代码冗余严重的情况,这儿记录一下常用的时间处理方法,后期会不断的完善和优化,...
  • 我整理了我一天中要把握六个90分: 把一个标准工作日划分为四个90分段: 第一个:9:00 ~ 10:00; 第二个:10:00 ~ 12:00; 第三个:14:00 ~ 15:30; 第四个:15:30 ~ 17:00; 上面四个时间段每个都要...
  • 需求:对一天的时间进行分段,比如: 8:00~10:00, 10:00~12:00, 12:00~14:00, …… 现在要插入一个时间段,检查该时间段是否与已经存在的时间段冲突(即有没有交集) 假设数据库存在一条数据: 新增一条...
  • Druid的数据源和分段 Druid的数据存储在"DataSource"中,这其实类似于传统的RDBMS中的表.每一个数据源按照时间进行分段,当然你还可以...每一个时间区间被称为一个"Chunk".(举个列子,一天的时间区间的Chunk,如果你...
  • Kafka 作为个高吞吐的消息中间件和传统的消息中间件个很大的不同点就在于它的日志实际上是以日志的方式默认保存在/kafka-logs文件夹中的。虽然默认有7清楚的机制,但是在数据量大,而磁盘容量不足的情况下,...
  • Kafka 作为个高吞吐的消息中间件和传统的消息中间件个很大的不同点就在于它的日志实际上是以日志的方式默认保存在/kafka-logs文件夹中的。虽然默认有7清楚的机制,但是在数据量大,而磁盘容量不足的情况下,...
  • java基础复习第三

    2020-05-21 00:02:43
    、多线程 并发:多个任务由个cpu分段执行 并行:多个任务由多个cpu同时执行 ...(1):创建个类继承thread并重写thread类中的run方法,并调用其start方法执行 public class mythread extends
  • 有效工作时长计算

    千次阅读 2018-06-01 21:54:19
    微信公众号原文 系统:Windows 7 ...考虑通用性,一天中的工作时间可以调整并且增加分段,例如由原来的两班次变成三班次 每一整天中工作时长是一致的,那么我们只需要计算开始那一天和结束那一天的工作时长...
  • 我们已经介绍了使用VLAN(虚拟局域网)和802.1Q标准进行网络分段以及在Linux和思科IOS操作系统支持802.1Q接口问题。今 ,我们将介绍如何使用台思科1200系列接入点提供三个不 我们...
  • 早上打电话,沟通面试时间,第二早上或者当天下午,我选了当天下午面试 英文开始: Hashtable 用什么数据结构实现它 数组,如果插入有什么问题 链表,二者优劣 Hashmap,和hashtable区别 英文结束,技术时候会问...
  • 【SRP】项目计划

    2020-03-14 00:04:19
    因为学习个庞大知识体系需要全身心投入,所以我决定周一到周五专心搞课程和作业,把周末空出来,全身心投入“深度学习”。所以,以下预期时间单位为“周”,实则是“两”。 任务分段 准备...
  • 从1.0版本发布到现在10天时间中,我们小组解决了光照对人脸识别准确度影响,采用了直方图均衡化(Histogram Equalization)方法。 直方图均衡化,实质上是对图像进行非线性拉伸,重新分配图像象元值,使一定灰度...
  • JAVA编程,求大神帮忙

    2017-07-24 00:56:59
    list2是一个季度的基准表,可以看出每一个季度的最后一天,现在想法是想将list1分段,比如第一段是从20120930到20130630,第二段是20140630到20140630,并且输出list1中连续季度的开始时间和结束时间,比如图中的:...
  • 时间看了决赛答辩直播,作为只萌新,决赛提到一些trick其实许多都有用到,但是没能够整合起来形成系统框架,东拼西凑,自己都不知道一些trick效果如何也加了进去,所以效率还是低了一些。...
  • 期末复习pta题解2

    2020-12-29 21:44:56
    目录时间换算字符串逆序求一元二次方程根倒立杨辉三角形4.14-循环显示指定位数数字【循环】【–图形打印A–】逢7击掌判断题前天是哪发奖金集合减法数列分段显示数字出现次数约分最简分式 时间换算 7-6 时间...
  • 第四周总结

    2016-02-28 22:21:00
    我这周还是沿用了以前的分段式记忆,就是每天有闲散时间来背单词,顺便复习上个闲散时间单词,这个方法是高中英语老师教给我,因为高中时候学业很重,所以真正开始实现这个方法是这个假期。 这周最后两...
  • 9.我们可以看见工程中的所有文件都出现在列表中了。我们可以直接按下下面的 绿色的run 按钮或者按下Ctrl+R 快捷键运行程序。 10.程序运行会出现空白的对话框,如下图。 11.我们双击文件列表的dialog.ui 文件,便出现...
  • 公司入职新人自我介绍 好的自我介绍绝对来自于... 我来到XXX虽然只有一天的时间,但在这短短的一天里,在和X总、X总、XX执行总经理、X总,交流,让我感到公司领导对工作的精益求精,不断创新,对员工的无微不至...
  • 时间一直在做个网页内容抓取东西(新闻抓取),到现在基本完成了,由于网站个数不是太多,选用个站点个模板方式进行内容提取。可是模板方式呢,实现地区比较简单,但是为每个网站添加模板是...
  • 极端天数模型(混合整数线性规划模型)正在求解无雨期(5中的太阳能,电池,柴油。 因为该模型是使用整数变量(例如,泵的运行状态,太阳能分段成本假设)构建的,所以目的是使用有限的计算资源来求解整数规划...
  • 中的文字统一去掉最后个字 讨如何去掉单元格中的个数字? 论一下取最后个单词的方法 如何去掉单元格最后位数字 如何在列已经输入的数据前添加“p” 什么函数可以插入字符 如何在数据前添加“*”号...
  • 本工程建设工期为730,采用主、副竖井开拓系统,建设方案合理、节约,基建时间短;采用无底柱分段崩落法,采矿效率高,生产能力大,安全可靠,矿石回采率高;选用进口采掘设备,性能先进、可靠,达到21世纪国外...

空空如也

空空如也

1 2 3
收藏数 44
精华内容 17
关键字:

一天中的时间分段