精华内容
下载资源
问答
  • 现在有一张student表,包含三字段:s_id,c_id,s_score: 目的1:如果只保留得到s_id为01,s_score为80的结果 输入语句: select * from score where case when s_id =01 and s_score =80 then 0 else 1 end...

    原始表
    现在有一张student表,包含三个字段:s_id,c_id,s_score:


    目的1:如果只保留得到s_id为01,s_score为80的结果

    输入语句:

    select * from score where case when s_id =01 and s_score =80 then 0 else 1 end=
    0;
    


    结果:


    目的2:筛选除同时满足s_id为01,s_score为80以外的所有数据
    输入语句:

    select * from score where case when s_id =01 and s_score =80 then 0 else 1 end=
    1;
    


    输出结果:


     

    展开全文
  • pandas筛选符合多个条件的方法

    万次阅读 多人点赞 2019-08-30 19:16:52
    很多时候,我都会面临着筛选出一张表中符合多列条件的数据,使用pandas可以快速的实现目标,在此记录下自己最常用的筛选手段


    我的这篇笔记不记录排序、分组、替换,只记录筛选功能的三种常见的方法。

    • 直接筛选(推荐)
    • 基于map方法的筛选(在方法一的基础上,十分推荐)
    • query方法(不推荐)

    所有代码均在:https://github.com/123liudong/pythonBlog/tree/master/dataDealPandas

    示例数据展示

    all_data = pd.read_csv('data.csv')
    print(all_data.info())
    print(all_data.head(100))
    

    在这里插入图片描述

    例子筛选说明

    为了简单例子,所以在使用筛选方法1和方法2的时候,直接筛选User_id=1439408和Date=NaN的数据。至于筛选方法3,因为我还不知道怎么表示NaN所以仅展示筛选User_id=1439408的数据。

    直接筛选

    • 直接使用列需要满足的条件,如果需要多个列同时满足条件,使用’&‘符号连接即可;如果只需要某一列满足条件,则使用’|'连接多个列的条件。
    # # 直接筛选方法
    some = all_data[(all_data['User_id'] == 1439408) & (all_data['Date'].isna())]
    print(some)
    

    结果:得到了User_id=1439408和Date为空的数据项

       User_id  Merchant_id  Coupon_id Discount_rate  Distance  Date_received  Date
    1  1439408         4663    11002.0        150:20       1.0     20160528.0   NaN
    2  1439408         2632     8591.0          20:1       0.0     20160217.0   NaN
    3  1439408         2632     1078.0          20:1       0.0     20160319.0   NaN
    4  1439408         2632     8591.0          20:1       0.0     20160613.0   NaN
    

    基于map的筛选

    • 这个筛选方式和直接筛选唯一不同的就是,把筛选条件给隔离出来了。
    user_requried = all_data['User_id'].map(lambda x : x==1439408)
    date_requried = all_data['Date'].map(lambda x : np.isnan(x))
    some = all_data[user_requried & date_requried]
    print(some) 
    

    结果:其中map返回的值必须是bool类型,即某一个条件。然后使用直接筛选的方式,把条件合并,最终得出筛选的结果。我认为使用此种类型的方法更加的优美。

       User_id  Merchant_id  Coupon_id Discount_rate  Distance  Date_received  Date
    1  1439408         4663    11002.0        150:20       1.0     20160528.0   NaN
    2  1439408         2632     8591.0          20:1       0.0     20160217.0   NaN
    3  1439408         2632     1078.0          20:1       0.0     20160319.0   NaN
    4  1439408         2632     8591.0          20:1       0.0     20160613.0   NaN
    

    使用query()方法筛选

    • 直接写表达式,得出想要筛选的结果。
    some = all_data.query('(User_id == 1439408)')
    print(some)
    

    结果:直接写表达式容易触发一些不必要的问题(值的类型容易出错,一些特殊值的表达困难等),所以并不建议使用这样的方法。

       User_id  Merchant_id  Coupon_id  ... Distance  Date_received        Date
    0  1439408         2632        NaN  ...      0.0            NaN  20160217.0
    1  1439408         4663    11002.0  ...      1.0     20160528.0         NaN
    2  1439408         2632     8591.0  ...      0.0     20160217.0         NaN
    3  1439408         2632     1078.0  ...      0.0     20160319.0         NaN
    4  1439408         2632     8591.0  ...      0.0     20160613.0         NaN
    5  1439408         2632        NaN  ...      0.0            NaN  20160516.0
    6  1439408         2632     8591.0  ...      0.0     20160516.0  20160613.0
    

    总结:

    • 直接筛选适用于一些较简单的筛选
    • 基于map的方法适用于较为复杂的筛选,把条件提出来实现,使得代码更加简单明了。
    • 使用query方法虽然也能实现,但写的表达式总是容易出错,所以不建议使用。

    参考资料

    • https://pandas.pydata.org/pandas-docs/stable/
    展开全文
  • JS实现条件查询筛选条件设值算法

    千次阅读 2019-07-09 18:30:49
    JS实现条件查询筛选与条件设值算法结果展示一,条件筛选实现原理二,条件设值实现原理伸手党 结果展示 为了不浪费大家时间,...2.条件筛选暂时不能同一字段两个条件 一,条件筛选实现原理 简述:第一步,转换...

    结果展示

    为了不浪费大家时间,避免看了发现不是自己想要的东西。我先将结果展示出来。
    在这里插入图片描述
    上图:原始数据


    在这里插入图片描述
    点击查询后条件筛选展示


    在这里插入图片描述
    点击查询后条件设值展示


    在这里插入图片描述
    两个方法结合使用。
    注:1.以上是JS的条件操作,仅限数据已经在前台时使用。2.条件筛选暂时不能同一字段两个条件

    一,条件筛选实现原理

    简述:第一步,转换参数格式。第二步,参数对比。

    第一步:将对象的格式转换为{key:[],key:[],key:[]}。将同样key的的value归到同一个数组中。方便循环对比。

    /**
     * 条件查询
     * @author zhou
     * @param tableArr表格参数[{},{},{}],where查询条件格式。威胁名称=K and 采取操作=1232321
     * @returns [{},{},{}]
     */
    function queryCriteria(tableArr, where) {
        //第一步开始:将tableArr转换为{字段:[],字段:[],字段:[]}。然后进行解读判断
        var listMap = {}
        for (var i = 0; i < tableArr.length; i++) {
            for (var k in tableArr[i]) {
                if (listMap[k]) {
                    listMap[k].push(tableArr[i][k]);
                } else {
                    var arr = [];
                    arr.push(tableArr[i][k]);
                    listMap[k] = arr;
                }
            }
        }
        //第二步开始
        var criteriaArr = where.split(" and ");
        //需要删除的对象的下标
        var delectArr = {};
        for (var i3 = 0; i3 < criteriaArr.length; i3++) {
            for (var k in listMap) {
                //判断字段是否存在
                if (criteriaArr[i3].indexOf(k) != -1) {
                    for (var i = 0; i < listMap[k].length; i++) {
                    	
                    		var newCriteriaArr = criteriaArr[i3].replace(k, listMap[k][i]);
                    		//转换为可判断的表达式,返回判断结果
                    		var booleanIf = judge(newCriteriaArr);
    	                    if (!booleanIf) {
    	                    	
    	                        //记录不满足条件的下标
    	                        delectArr["index" + i] = i;
    	                    }
                    }
                }
            }
        }
        for (var k in delectArr) {
            delete tableArr[delectArr[k]];
        }
        var newTableArr = [];
        for (var i = 0; i < tableArr.length; i++) {
            if (tableArr[i] != undefined) {
                newTableArr.push(tableArr[i]);
            }
        }
        return newTableArr;
    }
    

    第二步:criteriaArr[i3].replace(k, listMap[k][i])是将条件字符串如:威胁名称=C。k=威胁名称。替换为key为威胁名称的数组中的值。在调用judge方法对字符串进行转型为可运算的表达式进行判断

    /**
     * 将字符串解析为if判断表达式
     * @author zhou
     * @param data
     * @returns boolean
     */
    function judge(str) {
        if(str.indexOf("=") != -1){
                var criteriaArr = str.split("=");
                if (criteriaArr[0] == criteriaArr[1]) {
                    return true;
                } else {
                    return false;
                }
        } else if(str.indexOf("!=") != -1){
        	var criteriaArr = str.split("!=");
            if (criteriaArr[0] != criteriaArr[1]) {
                return true;
            } else {
                return false;
            }
        } else if(str.indexOf(">") != -1){
        	var criteriaArr = str.split(">");
            if (criteriaArr[0] > criteriaArr[1]) {
                return true;
            } else {
                return false;
            }
        } else if(str.indexOf("<") != -1){
        	var criteriaArr = str.split("<");
            if (criteriaArr[0] < criteriaArr[1]) {
                return true;
            } else {
                return false;
            }
        } else if(str.indexOf("不包含") != -1){
        	var criteriaArr = str.split("不包含");
            if (criteriaArr[0].indexOf(criteriaArr[1]) == -1) {
                return true;
            } else {
                return false;
            }
        } else if(str.indexOf("包含") != -1){
        	var criteriaArr = str.split("包含");
            if (criteriaArr[0].indexOf(criteriaArr[1]) != -1) {
                return true;
            } else {
                return false;
            }
        }
    }
    

    测试用例:

    /**
     * 测试方法
     * @author zhou
     * @returns void
     */
    test();
    function test(){
    	var testParam = [
    	{test1:2,test2:3,test3:5},
    	{test1:5,test2:4,test3:5},
    	{test1:2,test2:3,test3:"好好"}
    	];
    	//返回的结果
    	var newTableArr = queryCriteria(testParam,"test1=2 and test3不包含好好");
    	console.log(JSON.stringify(newTableArr));
    }
    

    二,条件设值实现原理

    第一步:拆分解析出条件
    第二步:判断是否满足条件
    注:请按测试用例的条件格式输入条件

    /**
     * 将满足条件的字段值修改为制定的值
     * @returns
     */
    function setCondition(arr,where){
    	//第一步开始
    	var strArr = where.split(" and ");
    	for(var i = 0; i < strArr.length;i++){
    		var regex = /\((.+?)\)/g;
    		var str = strArr[i].match(regex)[0];
    		str = str.split("(").join('');
    		str = str.split(")").join('');
    		//第二步开始。区分类型,不包含则进
    		if(str.indexOf(">=") == -1){
    			var arrStr = str.split("包含");
    			for(var i2 = 0; i2 < arr.length;i2++){
    					//包含则进
    					if (arr[i2][arrStr[0]].indexOf(arrStr[1]) != -1){
    						arr[i2][arrStr[0]] = strArr[i].split(")=")[1];
    					}
    				
    			}
    		} else {
    			var arrStr = str.split(">=");
    			for(var i2 = 0; i2 < arr.length;i2++){
    					//满足则进
    					if (arr[i2][arrStr[1]]>=arrStr[2]&&arr[i2][arrStr[1]]<=arrStr[0]){
    						arr[i2][arrStr[1]] = strArr[i].split(")=")[1];
    					}
    				
    			}
    		}
    		
    	}
    	return arr;
    }
    

    测试用例:

    /**
     * 测试方法
     * @author zhou
     * @returns void
     */
    test();
    function test(){
    	var testParam2 = [{
    	"置信值": "2",
    	"事件": "我的电脑被攻击了",
    	"威胁名称": "K",
    	"采取操作": "关机",
    	"创建时间": "2019-05-06"
    }, {
    	"置信值": "3",
    	"事件": "我的电脑被谁关机了",
    	"威胁名称": "C",
    	"采取操作": "拔网线",
    	"创建时间": "2019-06-18"
    }, {
    	"置信值": "3",
    	"事件": "我的电脑被谁关机了",
    	"威胁名称": "C",
    	"采取操作": "拔网线",
    	"创建时间": "2019-06-18"
    }, {
    	"置信值": "2",
    	"事件": "摄像头无缘无故打开了",
    	"威胁名称": "C",
    	"采取操作": "关机",
    	"创建时间": "2019-06-17"
    }, {
    	"置信值": "3",
    	"事件": "死机了",
    	"威胁名称": "A",
    	"采取操作": "打开",
    	"创建时间": "2019-06-19"
    }];
    	var arr = setCondition(testParam2,
    	"(2019-06-18>=创建时间>=2019-05-05)=旧数据 and (3>=置信值>=2)=高 and (事件包含死机)=屏蔽");
    	console.log(JSON.stringify(arr));
    }
    

    伸手党

    结语:我也是一个伸手党。一些简单的地方我就没有讲解了,看代码比话来的更快。有什么不足,不懂的地方欢迎留言指出。
    点我直接恰饭
    在这里插入图片描述

    展开全文
  • excel满足其中任何一个条件筛选

    千次阅读 2020-05-22 16:50:41
    1、在工作表的空白位置写上两个条件,注意列名要与原表格完全一致,同时两个条件要分开写在不同的行上,然后在“数据”选项卡的“排序与筛选”组中单击“高级”按钮。 2、此时会弹出“高级筛选”对话框,我们单击...

    原始表格

    上图中的表格是我们今天的案例,我们要在其中筛选出隶属于财务部门或者工资高于1500的员工记录。

    高级筛选

    1、在工作表的空白位置写上两个条件,注意列名要与原表格完全一致,同时两个条件要分开写在不同的行上,然后在“数据”选项卡的“排序与筛选”组中单击“高级”按钮。

    列表区域

    2、此时会弹出“高级筛选”对话框,我们单击列表区域右侧的按钮,然后拖动鼠标选择做为筛选列表的区域。

    条件区域

    3、单击条件区域右侧的按钮,然后拖动鼠标选择之前写筛选条件的区域,完成之后再次单击按钮还原对话框。

    筛选结果位置

    4、选择“将筛选结果复制到其他位置”,然后选择筛选结果放置的位置。

    确定

    5、现在,高级筛选的各项设置均已完成,我们单击“确定”按钮即可。

    展开全文
  • 关注微信公众号:CodingTechWork,一起学习进步。...去核对是否存在该记录,本文总结一下如何通过excel来比对两个数据表。 sql转excel 方式   我们先要解决一个mysql数据库中的数据如何转出到excel.
  • SELECT ( EXTRACT ( DAY FROM SUM (e.out_time - e.in_time) ) * 24 + EXTRACT ( HOUR FROM SUM (e.out_time - e.in_time) ) ) AS A FROM acc_zone_inside_person e ... e.pin = '...
  • 今天记录一下pandas筛选出一表中满足另一表中所有条件的数据。例如: list1 结构: 名字,ID,颜色,数量,类型。list1 = [['a',1,255,100,'03'],['a',2,481,50,'06'],['a',47,255,500,'03'],['b',3,1,50,'11']]...
  • 批量大文本筛选过滤工具开发记录

    千次阅读 2015-07-21 17:27:39
    批量大文本筛选过滤工具开发记录本周花了三天的时间做了一大文本数据筛选工具,主要是针对excel打开很慢或者无法打开的几百兆乃至几G的csv、txt文件,提供常规的数据筛选、统计和输出功能。这大文本筛序需求对...
  • Kettle中求两个记录集的差集

    千次阅读 2014-07-14 17:23:34
    假定数据流1-数据流2(也就是两个流在compare key上相等的话,删除数据流1对应的行作为结果流),数据流1和数据流2 连接(选"集合记录集连接"控件),选LEFT JOIN然后用一个Java过滤器滤掉匹配上的行,然后用"字段选择...
  • django orm中怎么样比较同一个模型中的两个字段来过滤记录呢? 例如一个合同字段,结束日期和终止日期的比较我们用sql很容易实现。 select *from contracts where contract_stop_time 这里要是用db模块中的F...
  • 需要使用django中的F 对象 先看看模型 class Test(models.Model): all_num= models.IntegerField(default=0, verbose_name='总数量 ') have_num= models.IntegerField(default=0, verbose_name='已有数量') ...
  • 天老师要求筛选一下最近几年学院发表的文章,从图书馆那要了份数据量较大的excel,将该excel分成学生文章、老师文章份excel,以第一作者为区分,B站学习法稍微补了补python操作excel,看到pandas就顺手用一下...
  • 先根据筛选条件获取满足条件记录的id,并且对id在sql中排序(避免大量数据内存中排序,很慢、很耗性能),取到分页对应的id;再根据id查询对应的记录,此时如果id对应的记录在库中很离散,那么会再次全表遍历; 问题...
  • 上次只要根据某个字段把有重复项的记录列出来,这次条件增多了,要根据两个两个以上字段来判断,当这些字段的值全部相同时,才认为出现了重复记录。还是以上次的数据为例吧,略有修改。表名 Student
  • 筛选条件严格,只要不满足条件的这一项数据就不会显示出来,不论是哪个表的这一行数据-等值连接。 left join 左外连接: 左外连接就是在等值连接的基础上加上主表中的未匹配数据。 right join 右外连接: 右...
  • SQL语句-统计全部数据,过滤掉其中两个字段同时重复的记录   标准查询语句结果:(表名:Test2) select * from Test2 <br />  滤掉其中两个字段同时重复的记录结果:(表名:Test...
  • sqlserver 以年月日为条件查询记录

    千次阅读 多人点赞 2011-09-15 17:06:02
    今天做一个东西的时候,要查某年,某月的记录,从网上找到了sqlserver中的datepart函数,该函数是用来提取年份,月份,日期的一个函数,带两个参数,第一个为(yy,mm,dd)其中一个,表示年月日,第二个参数为字段...
  • GROUP BY 条件查询最新时间记录

    万次阅读 2017-10-25 12:35:10
    很明显需求没什么难,分组当然想到的是group by,但是这里是有时间条件筛选的。虽然网上很多答案,但是我发现实际操作上是没有生效的,不知道是MYSQL版本问题还是答主们只是理论而没有实际尝试过,这里分享一下我...
  • Web应用中,对记录集的Tag运算中 找出同时符合多tag条件记录集合算法,SQL 语句解决方案。
  • 使用 SQLAlchemy ORM 查询数据的时候,如果需要的获取的记录按选条件进行筛选,可以参考本文介绍的相关方法。不存在什么技巧,需要的是熟悉而已。使用我经常用的数据源 Sample Data。推荐使用 jupyter notebook 进行...
  • 复杂条件一网筛尽Excel高级筛选技巧

    千次阅读 2009-08-25 10:29:00
    若要筛选含有指定关键字的记录,并且将结果显示在两个表中进行数据比对或其他情况,“自动筛选”就有些捉襟见肘了。“傻瓜相机”毕竟功能有限,那么就让我们来试试“高级相机”吧!熟练运用“高级筛选”,无论条件...
  • 如何在sql表中查找条重复记录

    千次阅读 2020-10-12 09:33:03
    如何在sql表中查找条重复记录 查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where id in (select id from people group by id having count (id) > 1) 思路 将表...
  • 前面学习了关于变量设定、数据集成的过程,下面进一步讲解在数据挖掘前,如何对记录及字段进行筛选和清理的过程,首先,介绍关于记录筛选或选择的办法,主要在“记录选项”面板中进行,对记录进行整理等,即针对数据...
  • 其中4字段为属性值,要求删除4属性值完全相同的数据,例某条数据的c1,c2,c3,c4四属性各自一 一对应且相同,要求只保留最新的一条,请问用Mongodb语句该如何操作,目前自己编写的语句,可以筛选出所有4属性...
  • 在开发中遇到对复杂数组中筛选出满足条件的数组元素,进行一下总结。 语法 array.filter(function(currentValue,index,arr), thisValue) 定义和用法 filter() 方法创建一新的数组,新数组中的元素是...
  • 要求:在有筛选条件的时候按照筛选条件查询用户列表;没有筛选条件时就查询所有。用户表里面只有部门的id(org_id),查询结果需要返回部门的名称;所以在设计表的时候就多留了一字段 存放部门的名称(临时存放);这...
  • 在SQL语句中可以使用WHERE子句过滤掉不符合条件记录。  1.比较查询  在WHERE子句中可以使用比较运算符对数值、字符值等信息进行查询。比较运算符这里归纳为三类:算术比较运算符、BETWEEN…AND运算符和IN...
  • SQL 有条件筛选重复数据

    万次阅读 2009-11-23 13:26:00
    --基础了解:1) select distinct name from table --打开重复记录的单个字段2) select * from table where fid in(Select min(fid) FROM table group by name)--打开重复记录的所有字段值3) select * from table ...
  • 最近,在一Insert SQL时报字段长度不够,但又没指出哪个字段,表的字段数很多,看了好久都没找出是哪个字段,心想有什么办法能按指定条件过滤当前记录的所有字段不就能找出我想要的字段吗?昨天终于用hstore写出了...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 81,264
精华内容 32,505
关键字:

如何筛选两个条件的记录