美文网首页
2020-05-13

2020-05-13

作者: YANG_ad29 | 来源:发表于2020-05-15 17:58 被阅读0次

    1.mysql 以一小时为间隔 统计24小时内 表的每一字段一小时的平均值

     SELECT `date`,MAX( times ) AS times FROM
                (SELECT DATE_FORMAT(@cdate := DATE_ADD( @cdate, INTERVAL - 1 hour ), '%Y-%m-%d %H:00:00') `date`,0 AS times FROM
                   ( SELECT DATE_FORMAT(@cdate := DATE_ADD( NOW( ), INTERVAL 1 hour ), '%Y-%m-%d %H:00:00') FROM pay_order ) t1
                   WHERE @cdate > (NOW() - interval 23 hour)
                UNION ALL
                SELECT DATE_FORMAT(create_time, '%Y-%m-%d %H:00:00') AS `date`,round(AVG(pull_up_time),1) as times from pay_order
                   where create_time > (NOW() - interval 23 hour) and pull_up_time >= 0
                   group by `date`
                   ORDER BY `date` DESC
                ) _tmpAllTable GROUP BY  `date` ORDER BY date DESC
    

    加上 UNION ALL 前面部分 是因为可能出现一小时内没有数据 造成 不连续

    2.以某一字段的不同值 分段统计(以10为间隔)

           set @ctime = 0 ;
            SELECT times, max(orderc) as orderCount  , max(success) as successCount , 
           round(max(success)/if(max(orderc)=0,1,max(orderc))*100,2) as rate FROM
            (SELECT times,0 success ,0 as orderc FROM (SELECT @ctime := @ctime+10 as times FROM 
           pay_order) t WHERE  times < 300
            UNION all
            SELECT  floor(pull_up_time /10 ) * 10   as times , COALESCE(sum(order_status = 2),0) as success  , 
           COALESCE(sum(order_status = 2 or order_status = 4),0) as orderc
            from pay_order
            WHERE pull_up_time >= 0
            GROUP BY times ) tem GROUP BY times  ORDER BY times
    

    相关文章

      网友评论

          本文标题:2020-05-13

          本文链接:https://www.haomeiwen.com/subject/vlwonhtx.html