精华内容
下载资源
问答
  • oracle 时间分段统计

    2020-09-15 14:09:00
    oracle 时间分段统计先对时间进行分段嵌套进统计的目标其他时间段无值补零分割某段时间到某段时间 每三小时份 先对时间进行分段 下面是每小时进行分段 select to_char(dt,'yyyy-mm-dd hh24') from ( select to_...

    先对时间进行分段

    下面是每小时进行分段

     select to_char(dt,'yyyy-mm-dd hh24') from (
     select to_date(时间,'yyyy-mm-dd hh24') + (level-1)/24 dt
     from dual connet by level <= 24
    )
    

    时间 : 可以是字符串 可以是查询出来的结果 最后 转成 to_date 后面的时间格式根据所需要的分割大小进行调整
    相加 :比时间大 ;相减:比时间小
    level:相当于一个变量 (connet by level <= 24)level 取1~24 即分成24段
    (level-1)/24:一天相当于1,每小时即1/24,每三小时1/8 以此类推; 当分隔时间超过一天 例如隔两天 则为 (level-1) * 2
    eg:时间为 2020-09-13 07:00:00 分割为每三小时一个分割 level/8

    dt
    2020-09-13 07
    2020-09-13 10
    2020-09-13 13
    2020-09-13 16
    2020-09-13 19
    2020-09-13 22
    2020-09-14 01
    2020-09-14 04

    嵌套进统计的目标

    select to_chart(d.dt,'yyyy-mm-dd hh24') timevalue, count(*) tvalue from table t,
    ( select to_char(dt,'yyyy-mm-dd hh24') from (
     select to_date(时间,'yyyy-mm-dd hh24') + (level-1)/8 dt
     from dual connet by level <= 8
    )) d
    where t.time < dt and t.time > d.dt + 1/8
    

    注意:结果只显示有数值的时间段

    timevaluetvalue
    2020-09-13 22400
    2020-09-14 04100
    2020-09-13 07808

    其他时间段无值补零

    select nvl(res_t1.tvalue,0) value,res_t2.dt
    from (
    select to_chart(d.dt,'yyyy-mm-dd hh24') timevalue, count(*) tvalue from table t,
    ( select to_char(dt,'yyyy-mm-dd hh24') from (
     select to_date(时间,'yyyy-mm-dd hh24') + (level-1)/8 dt
     from dual connet by level <= 8
    )) d
    where t.time < dt and t.time > d.dt + 1/8
    ) res_t1,
    (select to_char(dt,'yyyy-mm-dd hh24') dt from (
     select to_date(时间,'yyyy-mm-dd hh24') + (level-1)/8 dt
     from dual connet by level <= 8
    )) res_t2
    where res_t1.timevalue(+) = res_t2.dt
    order by res_t2.dt
    
    dttvalue
    2020-09-13 07808
    2020-09-13 100
    2020-09-13 130
    2020-09-13 160
    2020-09-13 190
    2020-09-13 22400
    2020-09-14 010
    2020-09-14 04100

    分割某段时间到某段时间 每三小时一份

     select to_char(dt,'yyyy-mm-dd hh24') from (
     select to_date(开始时间,'yyyy-mm-dd hh24') + (level-1)/8 dt
     from dual connet by level < round(to_number(to_date(结束时间,'yyyy-mm-dd HH24')-to_date(开始时间,'yyyy-mm-dd hh24'))*8+1,0)
     )
    
    

    逻辑和开头的分割时间的思路差不多 把分段的个数用to_number 计算出来,然后再嵌套统计就完成了

    展开全文
  • 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)

     

    展开全文
  • 表结构: +----------------+--------------+ | time | num | ...如何查询time字段每隔15秒/30秒/1分钟段的sum值,也就是汇总时间段内多条数据为条,可以将数据库分段,可就是不知道该怎么分,求大神指导...
  • 原来初学js时写过篇js分段的文章,洋洋洒洒大篇,现在看来蠢到炸,最近有时间,重新整理了一下,,想把原来的删了,免得被人看见丢人,但是想想,就让他在那存在着吧,看到时,还能激励着我向更好的方向前进!...

    原来初学js时写过一篇js分段的文章,洋洋洒洒一大篇,现在看来蠢到炸天,最近有时间,重新整理了一下,,想把原来的删了,免得被人看见丢人,但是想想,就让他在那存在着吧,看到时,还能激励着我向更好的方向前进!!

     

    基本原理就是根据时间戳,计算前后时间戳的差值对取多少份,求得平均数,每次在开始时间的基础上加上差值,形成新的时间戳,再将时间戳转换成我所需要的时间格式

     

    是不是超简单,我觉得也是,发现date函数功能如此强大,其实都没有写的必要,直接粘代码上来,大家参考吧,有啥问题请留言

     

     1 function range(beginTime, endTime) {//后台大哥要求的数据格式,在这边存入
     2     this.beginTime = beginTime;
     3     this.endTime = endTime;
     4 }
     5 
     6 function addDatetime(dt) {//时间戳转换日期格式,我这边的格式是 "2017-10-05 01:02:56",需要补零
     7     dt = new Date(dt);
     8     var dataTime_str = "";
     9 
    10     var Year = dt.getFullYear();
    11     dataTime_str += Year + "-";//存入年
    12 
    13     var mon = parseInt(dt.getMonth()) + 1;
    14     dataTime_str += (mon < 10 ? ("0" + mon) : mon) + "-";//存入月  .getMonth()函数从0月开始算,正确日期应该+1
    15 
    16     var day = dt.getDate();
    17     dataTime_str += (day < 10 ? ("0" + day) : day) + " ";//存入日
    18 
    19     var hh_ = dt.getHours();
    20     dataTime_str += (hh_ < 10 ? ("0" + hh_) : hh_) + ":";//存入时
    21 
    22     var mm_ = dt.getMinutes();
    23     dataTime_str += (mm_ < 10 ? ("0" + mm_) : mm_) + ":";//存入分
    24 
    25     var ss_ = dt.getSeconds();
    26     dataTime_str += (ss_ < 10 ? ("0" + ss_) : ss_);//存入秒
    27 
    28     return dataTime_str;
    29 }
    30 
    31 function TimeRange(startTimes, endTimes, amount) {// 传入参数 2017-10-05 2017-10-06 24 开始时间 结束时间 多少段
    32     startTimes = Date.parse(new Date(startTimes + " 00:00:00")); // 计算开始时间的时间戳
    33     endTimes = Date.parse(new Date(endTimes + " 23:59:59")); // 计算结束时间的时间戳
    34     var timeAll = endTimes - startTimes; // 总时间间隔
    35     if(endTimes <= startTimes) {
    36         return -1;
    37     }
    38     if(amount < 2) {
    39         return -2;
    40     }
    41     try {
    42         var timeRange = new Array(); // return数组初始化
    43         var timeGap = timeAll / amount ; // 分割后时间间隔
    44        
    45         var slidingTime = 0;
    46         var momentTime_front = "";
    47         var momentTime_rear = "";
    48       
    53         for(var i = 0; i < amount; i++) {
    54 
    55             momentTime_front = addDatetime(startTimes + timeGap * (i  ));
    56             momentTime_rear = addDatetime(startTimes + timeGap * (i  +1) - 1000);
    57 
    58             timeRange.push(new range(momentTime_front, momentTime_rear));
    59         }
    60         
    64         return timeRange;
    65     } catch(e) {
    66         alert("出错了:" + e);
    67     }
    68 }

     

    转载于:https://www.cnblogs.com/xichuanggushi/p/7851979.html

    展开全文
  • linux分段和分页

    2017-08-28 19:00:43
    linux分段和分页 ...前时间看了《深入理解Linux内核》对其中的内存管理部分花了不少时间,但是还是有很多问题不是很清楚,最近又花了一些时间复习了一下,在这里记录下自己的理解和对L

    linux中的分段和分页

    http://blog.csdn.net/hguisu/article/details/6152921 Linux 内存管理

    觉得这篇文章写分段和分页机制还是挺清晰的,在此转载一下。

     

    前一段时间看了《深入理解Linux内核》对其中的内存管理部分花了不少时间,但是还是有很多问题不是很清楚,最近又花了一些时间复习了一下,在这里记录下自己的理解和对Linux中内存管理的一些看法和认识。

    我比较喜欢搞清楚一个技术本身的发展历程,简而言之就是这个技术是怎么发展而来的,在这个技术之前存在哪些技术,这些技术有哪些特点,为什么会被目前的技术所取代,而目前的技术又解决了之前的技术所存在的哪些问题。弄清楚了这些,我们才能比较清晰的把握某一项技术。有些资料在介绍某个概念的时候直接就介绍这个概念的意义,原理,而对其发展过程和背后的原理丝毫不提,仿佛这个技术从天上掉下来的一样。介于此,还是以内存管理的发展历程来讲述今天的主题。

     

    首先,我必须要阐述一下这篇文章的主题是Linux内存管理中的分段和分页技术。

    让我们来回顾一下历史,在早期的计算机中,程序是直接运行在物理内存上的。换句话说,就是程序在运行的过程中访问的都是物理地址。如果这个系统只运行一个程序,那么只要这个程序所需的内存不要超过该机器的物理内存就不会出现问题,我们也就不需要考虑内存管理这个麻烦事了,反正就你一个程序,就这么点内存,吃不吃得饱那是你的事情了。然而现在的系统都是支持多任务,多进程的,这样CPU以及其他硬件的利用率会更高,这个时候我们就要考虑到将系统内有限的物理内存如何及时有效的分配给多个程序了,这个事情本身我们就称之为内存管理。

    下面举一个早期的计算机系统中,内存分配管理的例子,以便于大家理解。

    加入我们有三个程序,程序1,2,3.程序1运行的过程中需要10M内存,程序2运行的过程中需要100M内存,而程序3运行的过程中需要20M内存。如果系统同时需要运行程序A和B,那么早期的内存管理过程大概是这样的,将物理内存的前10M分配给A, 接下来的10M-110M分配给B。这种内存管理的方法比较直接,好了,假设我们这个时候想让程序C也运行,同时假设我们系统的内存只有128M,显然按照这种方法程序C由于内存不够是不能够运行的。大家知道可以使用虚拟内存的技术,内存空间不够的时候可以将程序不需要用到的数据交换到磁盘空间上去,已达到扩展内存空间的目的。下面我们来看看这种内存管理方式存在的几个比较明显的问题。就像文章一开始提到的,要很深层次的把握某个技术最好搞清楚其发展历程。

    1. 进程地址空间不能隔离

     

    由于程序直接访问的是物理内存,这个时候程序所使用的内存空间不是隔离的。举个例子,就像上面说的A的地址空间是0-10M这个范围内,但是如果A中有一段代码是操作10M-128M这段地址空间内的数据,那么程序B和程序C就很可能会崩溃(每个程序都可以系统的整个地址空间)。这样很多恶意程序或者是木马程序可以轻而易举的破快其他的程序,系统的安全性也就得不到保障了,这对用户来说也是不能容忍的。

    2.   内存使用的效率低

     

    如上面提到的,如果我们要像让程序A、B、C同时运行,那么唯一的方法就是使用虚拟内存技术将一些程序暂时不用的数据写到磁盘上,在需要的时候再从磁盘读回内存。这里程序C要运行,将A交换到磁盘上去显然是不行的,因为程序是需要连续的地址空间的,程序C需要20M的内存,而A只有10M的空间,所以需要将程序B交换到磁盘上去,而B足足有100M,可以看到为了运行程序C我们需要将100M的数据从内存写到磁盘,然后在程序B需要运行的时候再从磁盘读到内存,我们知道IO操作比较耗时,所以这个过程效率将会十分低下。

    3. 程序运行的地址不能确定

     

    程序每次需要运行时,都需要在内存中非配一块足够大的空闲区域,而问题是这个空闲的位置是不能确定的,这会带来一些重定位的问题,重定位的问题确定就是程序中引用的变量和函数的地址,如果有不明白童鞋可以去查查编译原理方面的资料。

    内存管理无非就是想办法解决上面三个问题,如何使进程的地址空间隔离,如何提高内存的使用效率,如何解决程序运行时的重定位问题?

    这里引用计算机界一句无从考证的名言:“计算机系统里的任何问题都可以靠引入一个中间层来解决。”

    现在的内存管理方法就是在程序和物理内存之间引入了虚拟内存这个概念。虚拟内存位于程序和物理内存之间,程序只能看见虚拟内存,再也不能直接访问物理内存。每个程序都有自己独立的进程地址空间,这样就做到了进程隔离。这里的进程地址空间是指虚拟地址。顾名思义既然是虚拟地址,也就是虚的,不是现实存在的地址空间。

    既然我们在程序和物理地址空间之间增加了虚拟地址,那么就要解决怎么从虚拟地址映射到物理地址,因为程序最终肯定是运行在物理内存中的,主要有分段和分页两种技术。

    分段(Segmentation):这种方法是人们最开始使用的一种方法,基本思路是将程序所需要的内存地址空间大小的虚拟空间映射到某个
    物理地址空间。

     

                    段映射机制

     

    每个程序都有其独立的虚拟的独立的进程地址空间,可以看到程序A和B的虚拟地址空间都是从0x00000000开始的。我们将两块大小相同的虚拟地址空间和实际物理地址空间一一映射,即虚拟地址空间中的每个字节对应于实际地址空间中的每个字节,这个映射过程由软件来设置映射的机制,实际的转换由硬件来完成。

    这种分段的机制解决了文章一开始提到的3个问题中的进程地址空间隔离和程序地址重定位的问题。程序A和程序B有自己独立的虚拟地址空间,而且该虚拟地址空间被映射到了互相不重叠的物理地址空间,如果程序A访问虚拟地址空间的地址不在0x00000000-0x00A00000这个范围内,那么内核就会拒绝这个请求,所以它解决了隔离地址空间的问题。我们应用程序A只需要关心其虚拟地址空间0x00000000-0x00A00000,而其被映射到哪个物理地址我们无需关心,所以程序永远按照这个虚拟地址空间来放置变量,代码,不需要重新定位。

    无论如何分段机制解决了上面两个问题,是一个很大的进步,但是对于内存效率问题仍然无能为力。因为这种内存映射机制仍然是以程序为单位,当内存不足时仍然需要将整个程序交换到磁盘,这样内存使用的效率仍然很低。那么,怎么才算高效率的内存使用呢。事实上,根据程序的局部性运行原理,一个程序在运行的过程当中,在某个时间段内,只有一小部分数据会被经常用到。所以我们需要更加小粒度的内存分割和映射方法,此时是否会想到Linux中的Buddy算法和slab内存分配机制呢,哈哈。另一种将虚拟地址转换为物理地址的方法分页机制应运而生了。

    分页机制:

    分页机制就是把内存地址空间分为若干个很小的固定大小的页,每一页的大小由内存决定,就像Linux中ext文件系统将磁盘分成若干个Block一样,这样做是分别是为了提高内存和磁盘的利用率。试想以下,如果将磁盘空间分成N等份,每一份的大小(一个Block)是1M,如果我想存储在磁盘上的文件是1K字节,那么其余的999K字节是不是浪费了。所以需要更加细粒度的磁盘分割方式,我们可以将Block设置得小一点,这当然是根据所存放文件的大小来综合考虑的,好像有点跑题了,我只是想说,内存中的分页机制跟ext文件系统中的磁盘分割机制非常相似。

    Linux中一般页的大小是4KB,我们把进程的地址空间按页分割,把常用的数据和代码页装载到内存中,不常用的代码和数据保存在磁盘中,我们还是以一个例子来说明,如下图:

     


    进程虚拟地址空间、物理地址空间和磁盘之间的页映射关系

    我们可以看到进程1和进程2的虚拟地址空间都被映射到了不连续的物理地址空间内(这个意义很大,如果有一天我们的连续物理地址空间不够,但是不连续的地址空间很多,如果没有这种技术,我们的程序就没有办法运行),甚至他们共用了一部分物理地址空间,这就是共享内存。

    进程1的虚拟页VP2和VP3被交换到了磁盘中,在程序需要这两页的时候,Linux内核会产生一个缺页异常,然后异常管理程序会将其读到内存中。

    这就是分页机制的原理,当然Linux中的分页机制的实现还是比较复杂的,通过了页全局目录,页上级目录,页中级目录,页表等几级的分页机制来实现的,但是基本的工作原理是不会变的。

    分页机制的实现需要硬件的实现,这个硬件名字叫做MMU(Memory Management Unit),他就是专门负责从虚拟地址到物理地址转换的,也就是从虚拟页找到物理页。

    展开全文
  • DATEADD() 函数在日期添加或减去指定的时间间隔。 DATEADD(datepart,number,date) date 参数是合法的日期表达式。number 是您希望添加的间隔数;对于未来的时间,此数是正数,对于过去的时间,此数是负数。...
  • 今天拿到一个查询需求,需要统计某一天各个时间段内的记录数量。 具体是统计某天9:00至22:00时间段,每半小时内订单的数量,最后形成的数据形式如下: 时间段 订单数 9:00~9:30 xx个 9:30~10:00 xx个 ... ...
  • 2、利用分组求和计算出一天内小时与分合计 select ( case when length( extract(hour from cast (oper_date as timestamp)) )&lt;2 then '0'|| extract(hour from cast (oper_date as timestamp)) else to...
  • 时间看了《深入理解Linux内核》对其中的内存管理部分花了不少时间,但是还是有很多问题不是很清楚,最近又花了一些时间复习了一下,在这里记录下自己的理解和对Linux内存管理的一些看法和认识。 我比较喜欢...
  • 每10分钟组进行查询,期待结果是这种![图片说明](https://img-ask.csdn.net/upload/201512/29/1451361325_678096.png) 这里我用的是 GROUP BY floor(bet_date / 1000) * 1000 ,但是有个问题是,并不是所有的时间...
  • Mysql时间段数分段据累加求和 简介 时间段数据的分段可以根据义务逻辑来划分,累加求和在mysql8.0及以上可以通过sum结合窗口函数来实现,低版本用子查询实现。 需求 对原始数据按照时间点3点前、6点前、12点前...
  • mysql 如何实现安时间分段查询?...需求:选择某一天时间分段显示对应ip在不通时间段的注册用户数 数据原表如下: id name ip createdate 实现效果: ip 1点 2点 3点 192.168.0.1 1 2 0
  • 在研究如何对时间序列进行线性分段的时候,浏览了60篇左右论文和教材的片段,对其中的6篇仔细阅读并编写程序和单元测试实现相应的算法。同时为了直观的看到分段效果,还制作简易的曲线图呈现原始序列和分段序列。...
  • * 通过开始时间和结束时间查询中间的每个月的开始和结束时间 * @param startTime * @param endTime * @return * @throws ParseException */ public static List&lt;Map&lt;String, String&gt;&...
  • 在使用echart的时候,需要对一条曲线按照不同的日期显示不同颜色,一天可能有很多数据,也可能没有数据,所以数据是不均匀显示的。 使用自定义『分段式视觉映射组件(visualMapPiecewise)』的每一段的时间范围的...
  • 湖南地图轻松绘分段专题图模块实现简介 功能介绍: 实现注册用户将excel统计业务数据展示在分段设色的专题地图上 特点: 1.无需地名的坐标数据,在线地址匹配 2.在线配图,样式多样 截图: 产品:...
  • # 如题,有用电时间序列数据形式的大数据,时间间隔1min,截取一年的数据。想通过matlab分段数据,按天画出用电量曲线。 序列模式如下: ``` 16/12/2006;17:24:00;4.216 16/12/2006;17:25:00;5.360 16/12...
  • 早上6点之前最晚打卡的记录,作为头一天的签退时间;早上6点之后的最早的打卡时间,作为当天的签到时间。 所以以上的脚本解决不了问题。需要大神们提供帮助。 当前只知道可以通过存储过程来按天进行处理。但不...
  • Linux的内存管理(分段和分页)

    千次阅读 2014-10-30 11:47:33
    时间看了《深入理解Linux内核》对其中的内存管理部分花了不少时间,但是还是有很多问题不是很清楚,最近又花了一些时间复习了一下,在这里记录下自己的理解和对Linux内存管理的一些看法和认识。 我比较...
  • 指定间隔保存 tcpdump -i tun0 -s0 -G 600 -w %Y_%m%d_%H%M_%S...-G 600 600s保存次 -i 指定网卡 -s -w 保存文件的格式 指定大小保存 tcpdump -i eth0 -s0 -C 5 -Z root -w eth0.pcap -C 5 每5M保存个包...
  • 201509-1-数列分段

    2018-10-13 21:31:28
    试题编号: 201509-1 试题名称: 数列分段 时间限制: 1.0s 内存限制: 256.0MB ...  输入的第行包含个整数n,表示数列整数的个数。  第二行包含n个整数a1,a2, …,...
  • 分段复习时间:6~7月 心理——早做准备,义无反顾 据不完全统计,每年都有近四成的考生最终没有走进考场,这说明有些考生的考前准备不太充分,甚至在备考的过程没有坚持下来,由此可见,考研首先是种心理上...
  • 数列分段: 问题描述 试题编号: ...数列分段 ...时间限制: ... 给定个整数数列,数列连续相同的最长整数序列算成一段,问数列中共有多少段? 输入格式  输入的第行包含个整数n,表示数
  • 前段时间在用datagridview显示数据的时候意识到由于需要显示的数据过大,同时用户查看数据的时候一般只要查看近几的数据,为了防止数据量的过大导致查询过慢,想到之前在手机上看火车票的时候当拉到底部的时候会又...
  • 做项目的时候需要统对项目日志做分析,其中有一个需求是获取某个给定的时间段内,每一天的日志数据,比如说要获取从2018-02-02 09:18:36到2018-03-05 23:18:36这个时间段内,统计出每一天的日志数据,一般情况下,...
  • 微信小程序rsa分段加密

    千次阅读 2017-07-24 12:11:29
    前段时间公司要开发app...纠结了三,终于集合各方资料弄出了个微信小程序试用的rsa分段加密程序.详见rsa.js demo下载地址http://download.csdn.net/detail/u011731544/9908595里面有好几种加密 这个是导出的签名

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,847
精华内容 8,338
关键字:

一天中的时间分段