精华内容
下载资源
问答
  • 报表需求,必须由SQL处理完成,页面筛选条件为日期,需要将所选日期按照每日区分,查出所有组别在每日的进线量、接通量、呼损量、接听率、进线占比、好评率。 进线量为线路全部进线量,接通量为status=‘Answered...

    任务场景:

    报表需求,必须由SQL处理完成,页面筛选条件为日期段,需要将所选日期按照每日区分,查出所有组别在每日的进线量、接通量、呼损量、接听率、进线占比、好评率。

    进线量为线路全部进线量,接通量为status=‘Answered’量,呼损量为status=‘NoAnswered’量,接听率=接通量/进线量,进线占比=线路进线量/进线总量,好评率=(非常满意+满意)/(非常满意+满意+服务不满意)

    数据库:mysql8.0

    表部分结构:

    记录表A
    session唯一标识
    queue_name组别名
    status状态
    created_at创建时间
    评价表B
    session唯一标识
    grade_name评价等级
    created_at创建时间

    解决思路:

    1.先根据所选时间段筛选出全部数据的记录和评价信息

    select 
    	DATE_FORMAT(cu.created_at, '%Y-%m-%d') as created_at, cu.queue_name ,cu.status ,sr.grade_name 
    from xcc_data.cdr_union cu 
    left join xcc_data.satisfy_rating sr on cu.`session` COLLATE utf8mb4_general_ci = sr.`session` 
    where 
    	cu.queue_name <> ''
    	and cu.created_at between '2021-12-11 00:00:00' and '2021-12-14 00:00:00'

    得出结果:

    2. 根据线路和日期分组,并计算各线路在各天内的聚合数据

    select 
    	queue_name,DATE_FORMAT(created_at, '%Y-%m-%d') as created_at,
    	count(*) as jxzl,
    	sum(if(status='Answered',1,0)) as jt,
    	SUM(IF(status='NoAnswered', 1, 0 )) as hs,
    	SUM(IF(grade_name = '非常满意',1,0)) as fcmy, 
    	SUM(IF(grade_name = '满意',1,0)) as my,
    	SUM(IF(grade_name = '对服务不满意',1,0)) as fwbmy
    from (
    	select 
    		DATE_FORMAT(cu.created_at, '%Y-%m-%d') as created_at, cu.queue_name ,cu.status ,sr.grade_name 
    	from xcc_data.cdr_union cu 
    	left join xcc_data.satisfy_rating sr on cu.`session` COLLATE utf8mb4_general_ci = sr.`session` 
    	where 
    		cu.queue_name <> ''
    		and cu.created_at between '2021-12-11 00:00:00' and '2021-12-14 00:00:00'
    )a 
    GROUP by a.created_at,queue_name 
    order by queue_name,a.created_at

    得出结果:

    3.求出筛选时间段内各天的总进线量

    select count(*) as xlzl,created_at 
    from (
    	select DATE_FORMAT(cu.created_at, '%Y-%m-%d') as created_at,id 
    	from xcc_data.cdr_union cu 
    	where 
    		cu.queue_name <> ''
    		and cu.created_at between '2021-12-11 00:00:00' and '2021-12-14 00:00:00'
    )b 
    group by b.created_at 

     得出结果:

    4.将2,3的结果关联,计算出要求的聚合数据 

    select 
    	aa.queue_name,
        aa.created_at,        
        jxzl as '进线量',
        jt as '接通量',
        hs as '呼损量',
        IFNULL(CONCAT(ROUND(jt/jxzl*100,2), '%' ),'0.00%') as '接听率',
        IFNULL(CONCAT(ROUND(jxzl/xlzl*100,2), '%' ),'0.00%') as '进线占比',
        IFNULL(CONCAT(ROUND((fcmy+my)/(fcmy+my+fwbmy)*100,2), '%' ),'0.00%') as '好评率'
    from (
    	select 
    		queue_name,DATE_FORMAT(created_at, '%Y-%m-%d') as created_at,
    	    count(*) as jxzl,
    	    sum(if(status='Answered',1,0)) as jt,
    	    SUM(IF(status='NoAnswered', 1, 0 )) as hs,
    	    SUM(IF(grade_name = '非常满意',1,0)) as fcmy, 
    	    SUM(IF(grade_name = '满意',1,0)) as my,
    	    SUM(IF(grade_name = '对服务不满意',1,0)) as fwbmy
    	from (
    		select 
    		    DATE_FORMAT(cu.created_at, '%Y-%m-%d') as created_at, cu.queue_name ,cu.status ,sr.grade_name 
    		from xcc_data.cdr_union cu 
    		left join xcc_data.satisfy_rating sr on cu.`session` COLLATE utf8mb4_general_ci = sr.`session` 
    		where 
    			cu.queue_name <> ''
    			and cu.created_at between '2021-12-11 00:00:00' and '2021-12-14 00:00:00'
    	)a 
    	GROUP by a.created_at,queue_name 
    	order by queue_name,a.created_at
    ) aa
    left join (
    	select count(*) as xlzl,created_at from (
    		select DATE_FORMAT(cu.created_at, '%Y-%m-%d') as created_at,id 
    		from xcc_data.cdr_union cu 
    			where 
    				cu.queue_name <> ''
    				and cu.created_at between '2021-12-11 00:00:00' and '2021-12-14 00:00:00'
    	)b group by b.created_at 
    ) bb on aa.created_at=bb.created_at

    得出最终结果:

    展开全文
  • select * from 表名 where to_days(时间字段名) = to_days(now());2、昨天SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 13、近7天SELECT * FROM 表名 where DATE_SUB(CURDATE(), ...

    select * from 表名 where to_days(时间字段名) = to_days(now());

    2、昨天

    SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 1

    3、近7天

    SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(时间字段名)

    4、近30天

    SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(时间字段名)

    5、本月

    SELECT * FROM 表名 WHERE DATE_FORMAT( 时间字段名, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )

    6、上一月

    SELECT * FROM 表名 WHERE PERIOD_DIFF( date_format( now( ) , '%Y%m' ) , date_format( 时间字段名, '%Y%m' ) ) =1

    7、查询本季度数据

    select * from `ht_invoice_information` where QUARTER(create_date)=QUARTER(now());

    8、查询上季度数据

    select * from `ht_invoice_information` where QUARTER(create_date)=QUARTER(DATE_SUB(now(),interval 1 QUARTER));

    9、查询本年数据

    select * from `ht_invoice_information` where YEAR(create_date)=YEAR(NOW());

    10、查询上年数据

    select * from `ht_invoice_information` where year(create_date)=year(date_sub(now(),interval 1 year));

    11、查询当前这周的数据

    SELECT name,submittime FROM enterprise WHERE YEARWEEK(date_format(submittime,'%Y-%m-%d')) = YEARWEEK(now());

    12、查询上周的数据

    SELECT name,submittime FROM enterprise WHERE YEARWEEK(date_format(submittime,'%Y-%m-%d')) = YEARWEEK(now())-1;

    13、查询上个月的数据

    select name,submittime from enterprise where date_format(submittime,'%Y-%m')=date_format(DATE_SUB(curdate(), INTERVAL 1 MONTH),'%Y-%m')

    select * from user where DATE_FORMAT(pudate,'%Y%m') = DATE_FORMAT(CURDATE(),'%Y%m') ;

    select * from user where WEEKOFYEAR(FROM_UNIXTIME(pudate,'%y-%m-%d')) = WEEKOFYEAR(now())

    select * from user where MONTH(FROM_UNIXTIME(pudate,'%y-%m-%d')) = MONTH(now())

    select * from user where YEAR(FROM_UNIXTIME(pudate,'%y-%m-%d')) = YEAR(now()) and MONTH(FROM_UNIXTIME(pudate,'%y-%m-%d')) = MONTH(now())

    select * from user where pudate between 上月最后一天 and 下月第一天

    14、查询当前月份的数据

    select name,submittime from enterprise where date_format(submittime,'%Y-%m')=date_format(now(),'%Y-%m')

    15、查询距离当前现在6个月的数据

    select name,submittime from enterprise where submittime between date_sub(now(),interval 6 month) and now();

    展开全文
  • php中查询指定时间段数据的方法:使用strtotime时间戳转换函数,代码为【$timea = strtotime($_POST['timea']);$sql = mysql_query($sq2);】。php中查询指定时间段数据的方法:下面是时间戳查询。如果数据库时间显示...

    php中查询指定时间段数据的方法:使用strtotime时间戳转换函数,代码为【$timea = strtotime($_POST['timea']);$sql = mysql_query($sq2);】。

    d66b5962c9b82cc245e49c62e345adb8.png

    php中查询指定时间段数据的方法:

    下面是时间戳查询。如果数据库时间显示的是2011-04-05那就不需要用strtotime时间戳转换函数:$timea = strtotime($_POST['timea']);

    $timeb = strtotime($_POST['timeb']);

    $sq2="select * from `ecs_order_info`

    where add_time between '$timea' and '$timeb' and `quanxian`='$dangqian'

    order by `order_id` DESC limit 50";

    $sql = mysql_query($sq2);

    96ff7a9ef4f28c2f92ed7332d09ca5e0.png

    扩展资料

    在php中完成

    1、UNIX时间戳转换为日期用函数: date()

    一般形式:date('Y-m-d H:i:s', 1156219870);

    2、日期转换为UNIX时间戳用函数:strtotime()

    一般形式:strtotime('2010-03-24 08:15:42');

    在MySQL中完成

    这种方式在MySQL查询语句中转换,优点是不占用PHP解析器的解析时间,速度快,缺点是只能用在数据库查询中,有局限性。

    1、UNIX时间戳转换为日期用函数: FROM_UNIXTIME()

    一般形式:select FROM_UNIXTIME(1156219870);

    2、日期转换为UNIX时间戳用函数:UNIX_TIMESTAMP()

    一般形式:Select UNIX_TIMESTAMP('2006-11-04 12:23:00′);

    举例:mysql查询当天的记录数:$sql=”select * from message Where DATE_FORMAT(FROM_UNIXTIME(chattime),'%Y-%m-%d') = DATE_FORMAT(NOW(),'%Y-%m-%d')

    order by id desc”。

    展开全文
  • 将平时涉及到的sql 有关时间处理的查询整理一下:场景1:时间段筛选时间段取交集商家将商品放到不同的销售平台上进行销售,A商品参与了A平台某个时段的活动(减价时段),需要进行减价销售,同时A商品此时可能也参与...

    将平时涉及到的sql 有关时间处理的查询整理一下:

    场景1:时间段筛选,时间段取交集

    商家将商品放到不同的销售平台上进行销售,A商品参与了A平台某个时段的活动(减价时段),需要进行减价销售,

    同时A商品此时可能也参与了B平台的活动,B平台要求该商品参与活动期间在所有平台中是价格最低(保价价格、保价时段),

    所以现在要对A商品在A平台某一时段进行减价时需要考虑到是否有参与了B平台的活动

    要求:查出该商品在减价时段期间是否参与了其他平台活动,若有则查出该商品在其他平台的保价价格,保价时段

    思路:

    查出减价时段是否存在保价时段(即存两个时段存在交集),若有交集则列出保价价格。保价时段

    那么有交集是哪几种情况呢?

    如图:如果存在以下四种情况之一,则需要查出保价价格

    e06896c2bf5f386617690466255bd818.png

    1.① ② 两种情况都是减价时段与保价时段有一部分交集

    2.第三种情况③则是减价时段完全在保价时段内

    3.第四种情况则是减价时段包含了保价时段

    那么我们现在应该如何用最短的sql语句查出所有有交集的情况呢?

    如下:

    Select * from table where cut_from between protect_form and protect_to ORcut_frombetween protect_form and protect_to ORprotect_frombetween cut_from and cut_to

    场景二  时间段合并

    同一商品可能在不同平台设置了不同的保价时间段且价格相同存入了数据库,现在需要合并为一条记录查询出来

    如图所示,商品item为100且价格为60有多条保价记录,现要求将相同价格的同一商品的多条保价记录根据时间合并为一条记录(时间有交集则合并)

    ccea8b93ff51186d90886cad34e0fcc8.png

    合并后为

    11549827fa94dc4dfa14810f9c64f18c.png

    sql如何去实现?

    sql代码如下

    SELECT X.item,X.protect_from,MIN(Y.protect_to) ASprotect_to,X.protect_priceINTO#temp01FROM(SELECTT1.item,T1.protect_from,T1.protect_priceFROMtemp_protectAST1LEFT OUTER JOINtemp_protectAS T2 ON T1. protect_from > T2. protect_from AND T1. protect_from <=T2. protect_toAND T1.protect_price =T2.protect_price AND T1.item =T2.itemGROUP BYT1. protect_from, T1.protect_price,T1.itemHAVING COUNT(T2. protect_from) = 0)ASX--除去起始时间在别的时间段内

    INNER JOIN

    --除去结束时间在别的时间段内

    (SELECTT3.item,T3.protect_to,T3.protect_priceFROMtemp_protectAST3LEFT OUTER JOIN

    temp_protect AS T4 ON T3. protect_to >= T4. protect_from AND T3. protect_to < T4. protect_to

    AND T3.protect_price =T4.protect_price AND T3.item =T4.itemGROUP BY T3. protect_to,T3.protect_price,T3.item

    HAVING COUNT(T4. protect_from) = 0

    )ASYON X.protect_from <= Y.protect_to AND X.protect_price =Y.protect_price AND X.item =Y.item

    GROUP BYX.item,X.protect_from,X.protect_priceselect * from #temp01

    展开全文
  • 归纳: 1、查询时间段内的数据,一般可以用between and 或 <> 来指定时间段。 2、mysql的时间字段类型有:datetime,timestamp,date,time,year。 3、 获取系统当前时间的函数: select CURDATE(); select NOW();...
  • bitsCN.comMySql查询特定时间段数据select * from wap_content where week(created_at) = week(now)如果你要严格要求是某一年的,那可以这样查询一天:select * from table where to_days(column_time) = to_days...
  • 所以用pandas读取数据后,希望筛选数据一个特定时间段里的数据(比如2012-07到2012-08两个月的数据)。但是把时间作为索引后,根本无法将没有该时间段数据的股票给跳过,总是报错,搜了各种pandas处理时间的方...
  • JAVA实现按时间段查询数据

    千次阅读 2021-03-01 08:33:17
    html / jsp开始时间:结束时间:js方法:function timeCheckInfo(page,startTime,endTime,officeVal){var startTime=$("#startTime").val();var endTime=$("#endTime").val();$.ajax({url: "../../security/base/...
  • html / jsp开始时间:结束时间:js方法:function timeCheckInfo(page,startTime,endTime,officeVal){var startTime=$("#startTime").val();var endTime=$("#endTime").val();$.ajax({url: "../../security/base/...
  • [Python] 纯文本查看 复制代码import pandas as pdimport osimport datetimepath = r'C:\Users\plm\Desktop\text1'files = os.listdir(path)for file in files:df =pd.read_excel(file)Traceback (most recent call ...
  • Oracle取某时间段数据: sysdate+1是加一天,sysdate+/-(1/48)就是加/减 半个小时 select count(*) from table_name wherOracle取某时间段数据:sysdate+1是加一天,sysdate+/-(1/48)就是加/减 半个小时select ...
  • oracle 取某个时间段数据,具体代码如下所示:select count(*),t.分组字段 from (select t.* ,to_char(t.时间,'HH24') stime,to_char(t.时间,'HH24mi') fz,to_char(时间,'d')from A twhere 时间>=to_date('2019...
  • SQLite 数据类型与C#数据类型对应表,转自:https://www.cnblogs.com/swtool/p/8202965.html,备用 问题: Debug 调试时确认 SQLiteParameter 中有参数 @CalDate1 和 @CalDate2 ,SQL语句如下: select VIN,CalTimes...
  • 数据格式模拟: [{ _id:xxxxx, name:xxx, age:18, health_records:[ky_start_at:开始时间,ky_end_at:'结束时间',....] }, { _id:xxxxx, ... health_records:[ky_start...使用filter过滤符合范围的时间段 筛选: ..
  • R筛选dataframe时间范围内的数据 目录 R筛选dataframe时间范围内的数据 两个日期之间的数据 某一日期之后的子集 某一日期前的子集 时间范围数据筛选的语法 两个日期之间的数据 如何选择dataframe...
  • 展开全部SQL如何精确查询e68a84e8a2ad3231313335323631343130323136353331333365653238两个时间段之间的数据利用此函数即可:sql="select * from managedate whereaaa_date>="&2005-11-1&"and aaa_date&...
  • 在实际业务分析时,常常会遇到查看某时间段数据的需求。例如可能需要查询近一周、近一月、近一年、近三年等固定周期的基金情况,或者查询从促销活动开始到结束期间的销售情况。 陆续有很多数据粉咨询,如何在 ...
  • 本文记录了如何实现vue前端与Django后端查询一定时间段内的数据
  • js实现在一段时间筛选出你想要的日期 var startTime = new Date(); var startTime = '“2021-8-10” var endTime = '“2021-9-10” var weekDay =[1,2,3,4]//指从2021-8-1
  • 目前的做法也只能是根据选择的时间段来生成查询参数。一次查询一天的数据。我的查询方法如下:public Page getData(TglsFamilyPicStaticsQuery query) {// 得到查询次数int queryCount = 0;Date begin = quer...
  • 在项目中偶尔会遇到使用时间段查询数据数据中包含有开始结束时间,时间有重合就查询出,现做个记录,以免重复费脑 select * from XXX (star_time > #{startTime} AND (#{endTime} > end_time OR (#{endTime}...
  • 比如表是datatable,,里面只存了一个月的数据时间字段biztime,数量字段qty。要求1-10号每天8-15点时段qty之和。语句:select date_part('day',biztime),sum(qty) from datatable where date_part('day',biztime)&...
  • yii gridview功能强大,但是时间筛选比较...万能的客户说这样不行,我要搜索时间段!我只要一个输入框!我要自动提交!注意要点:1.首先要在gridview中引入相关js,实现双日期,这里选择了jquery.daterangepicker....
  • 需求很多时候我们需要按照时间段来进行日志的分析,比如说查看上午的,或者某月某日的的具体日志,就不能简单实用tail -f或者head -n命令了。这个时候我们需要借用awk。命令zcat com.log20160529.gz | grep '...
  • pandas 按日期范围筛选数据的实现

    千次阅读 2021-03-06 06:01:13
    日期转换用来筛选的列是 date 类型,所以这里要把要筛选的日期范围从字符串转成 date 类型比如我的数据包含列名为 trade_date,从 20050101 - 20190926 的数据,我要筛选出 20050606 - 20071016 的数据,那么,先...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 104,509
精华内容 41,803
关键字:

如何筛选时间段的数据