首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Excel公式技巧21: 统计至少在一列中满足条件的行数

在这篇文章中,探讨一种计算在至少一列中满足规定条件的行数的解决方案,示例工作表如下图1所示,其中详细列出了各个国家在不同年份废镍的出口水平。 ?...2004年和2005年的数据中至少有一个满足此标准的国家数量呢?...由于数据较少,我们可以从工作表中清楚地标出满足条件的数据,如下图2所示。 ? 图2 显然,“标准的”COUNTIF(S)公式结构不能满足要求,因为我们必须确保不要重复计数。...如下图3所示,我们可以在工作表中标出满足条件的数据,除了2个国家外,其他11个国家都满足条件。 ?...并且,由于上述数组(一个13行乘9列的数组)包含9列,因此我们用来形成乘积的矩阵的行数必须等于该数组的列数。

4.1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    数据分析小结:使用流计算 Oceanus(Flink) SQL 作业进行数据类型转换

    而 ELT 过程逐渐被开发者和数据分析团队所重视,如果读者已经非常熟悉 SQL,采用 ELT 模式完成数据分析会是一个好的选择,比如说逐渐被数据分析师重视的 DBT 工具,便利用了 SQL 来做数据转换...并且 Flink SQL 采用的是开源的 Apache Calcite 来实现对标准 SQL 语法的支持,没有额外的 SQL 语法学习成本。...腾讯云 流计算 Oceanus[1] 是基于 Apache Flink 构建的企业级实时大数据分析平台,提供了可视化的 SQL 作业,降低了数据分析团队的数据获取难度。...返回值可以在 CASE 语句中作为条件使用。...阅读参考: [1] 流计算 Oceanus: https://cloud.tencent.com/product/oceanus [2] Flink 实践教程:入门 1-零基础用户实现简单 Flink

    1.8K30

    数据分析小结:使用流计算 Oceanus(Flink) SQL 作业进行数据类型转换

    并且 Flink SQL 采用的是开源的  Apache Calcite 来实现对标准 SQL 语法的支持,没有额外的 SQL 语法学习成本。...腾讯云 流计算 Oceanus[1] 是基于 Apache Flink 构建的企业级实时大数据分析平台,提供了可视化的 SQL 作业,降低了数据分析团队的数据获取难度。...返回值可以在 CASE 语句中作为条件使用。 ...阅读参考: [1] 流计算 Oceanus: https://cloud.tencent.com/product/oceanus [2] Flink 实践教程:入门 1-零基础用户实现简单 Flink... Oceanus 限量秒杀专享活动火爆进行中↓↓ 点击文末「阅读原文」,了解腾讯云流计算 Oceanus 更多信息~腾讯云大数据 长按二维码 关注我们

    1.5K20

    SQL答疑:如何使用关联子查询解决组内筛选的问题

    因为这种可以使用关联列的灵活性,将SQL查询写成子查询的形式往往可以极大的简化SQL语句,也使得SQL查询语句更方便理解。...外部查询的每行数据传递一个值给子查询,然后子查询为每一行数据执行一次并返回它的记录。然后,外部查询根据返回的记录做出决策。...比如查询三门课程分数相同的学生,需要将各科考试成绩的记录按照学生进行分组,同一个学生的三科成绩分为一组,对组内的三科成绩进行比较是否相同,来筛选满足条件的学生。...再比如查询价格低于该品类平均价格的商品,需要将各品类的商品信息按照品类进行分组,同一个品类的商品记录分为一个组,对组内的多个商品计算平均价格,来筛选满足条件的商品。...相当于执行了 将这个计算值传递给外部查询。 第三步:外部查询基于1400进行筛选,找出同职位工资高于1400的员工。相当于执行了 继续循环直到表中的最后一条记录,最终返回满足条件的员工信息。

    3.3K30

    Mysql几种join连接算法

    大致执行流程如下 从t2表中读取一行记录(如果t2表有查询过滤条件,会先执行完过滤条件,再从过滤后结果中取一行记录) 从第1步记录中,取出关联字段 a 到 t1表查找 取出 t1表满足条件的记录与t2中获取到的结果进行合并...,将结果放入结果集 循环上3个步骤,直到无法满足条件,将结果集返回给客户端 整个过程会读取t2表所有数据(100行数据),然后遍历每行数据字段a的值,根据t2表中a的值扫描t1表中对应行数据(扫描100...上面SQL大致执行流程如下 从t2表中读取一行记录 从第1步记录中,取出关联字段 a 到 t1表的辅助索引树中进行查找 从t1表中取出辅助索引树中满足条件的记录拿出主键ID到主键索引中根据主键ID将剩下字段的数据取出与...t2中获取到的结果进行合并,将结果放入结果集 循环上三个步骤,直到无法满足条件,将结果集返回给客户端 特点:基于嵌套循环连接算法进行优化,虽然还是双层循环进行匹配数据,但是内层循环(被驱动表)是使用索引树的高度决定循环次数的...中(默认内存大小为256k,如果数据量多,会进行分段存放,然后进行比较) 把表t1的每一行数据,跟join_buffer中的数据批量进行对比 循环上两个步骤,直到无法满足条件,将结果集返回给客户端 这个例子里表

    2.7K10

    解读MySQL 8.0新特性:Skip Scan Range

    我们知道在之前的版本中,如果要使用到索引进行扫描,条件必须满足索引前缀列,比如索引idx(col1,col2), 如果where条件只包含col2的话,是无法有效的使用idx的, 它需要扫描索引上所有的行...新的优化可以避免全量索引扫描,而是根据每个col1上的值+col2上的条件,启动多次range scan。每次range scan根据构建的key值直接在索引上定位,直接忽略了那些不满足条件的记录。...示例 下例是从官方文档上摘取的例子: 也可以从optimizer trace里看到如何选择的skip scan: 我们从innodb的角度来看看这个SQL是如何执行的,我们知道每个index scan都会走到...根据worklog的描述,对于如下query: 需要满足如下条件才能使用skip scan: ref: get_best_skip_scan() 当skip scan拥有更低的cost时,会被选择,计算...cost的函数是cost_skip_scan(),由于索引统计信息中已经基于不同的前缀列值估算了distinct value的个数(rec_per_key), 可以基于此去预估可能需要读的行数。

    10110

    Mysql中orderby底层执行流程

    重复步骤 3、4 直到 city 的值不满足查询条件为止,对应的主键 id 也就是图中的IDX。 对sort_buffer中的数据按照字段name做快速排序。...重复步骤 3、4 直到 city 的值不满足查询条件为止,对应的主键 id 也就是图中的IDX。 对sort_buffer中的数据按照字段name做快速排序。...按照上图,整个查询的流程如下: 从索引(city,name)找到第一个满足 city=’苏州’条件的主键 id。...重复步骤 2、3,直到查到第 1000 条记录,或者是不满足 city=’苏州’条件时循环结束。 对应的流程图如下: ? 可以看到,这个查询过程不需要临时表,也不需要排序。...而且由于(city,name)这个联合索引本身有序,所以这个查询也不用把 4000 行全都读一遍,只要找到满足条件的前 1000 条记录就可以退出了。

    2K30

    insert ... on duplicate key update 和 replace into

    先说结论 insert ... on duplicate key update 和 replace into 执行成功之后返回的影响行数,是个比较小的主题,我们先说结论,然后再分析这两种 SQL 执行过程中计算影响行数的逻辑...update 字段列表 insert duplicate 语句的影响行数,保存在 Statistics 类的实例属性 copied 和 updated 中,计算公式:影响行数 = copied + updated...不过,要使用这种方式,需要满足一些条件,后面会详细说。...replace into 语句的影响行数,保存在 Statistics 类的实例属性 copied 和 deleted 中,计算公式:影响行数 = copied + deleted。...使用更新旧记录方式,需要同时满足 3 个条件: 条件 1,第 2 步中报记录冲突的那个索引是表中最后创建的唯一索引(也可能是主键)。 条件 2,表中的所有字段,都没有被其它表的字段作为外键约束。

    1.8K40

    如何巧用索引优化SQL语句性能?

    该值是一个估算值,表示在应用表条件后,返回的行数占读取行数的百分比 Extra: 其他的额外信息。...rows:1,表示预计读取 936000行数据filtered:10.00,表示在扫描了user表的所有行之后,只有大约 10%的行满足查询条件并被返回Extra:Using where,表示使用了WHERE...where 条件中的字段都可以匹配索引,但是 where a = ?and c = ? where条件中的a,c只有a 可以匹配 联合索引的a字段。...示例: 场景:查询用户表中姓刘的男性 联合索引:index(name, sex) B+树索引模型示意图如下:查询分析:sql复制代码首先,从根节点查到第一个'刘'开头的记录是id2,然后向后遍历,直到不满足条件为止...,最后结果id2,id3两条;然后,获取指向子节点的指针,定位到子节点,一直到叶子节点,接着比较第2个字段 sex='男',定位到 id2;最后,根据id2到聚簇索引上遍历,直到叶子节点上获取目标数据;

    17810

    一文搞懂MySQL的Join,聊一聊秒杀架构设计

    的Join是如何执行的 join可以说一种集合的运算,比如left join,right join,inner join,full join,outer join,cross join等,这些集合间的计算关系对应在高中数学集合里面的交集...*fromt1leftjoint2on(t1.username=t2.username) 那么这条SQL的执行步骤如下: 从表t1中取一行数据r1 从r1中,取出字段username到表t2中查询 取出表...t2中满足条件的行,跟r1组成一行,作为结果集的一部份 重复执行步骤1,2,3,直到表t1的所以数据循环完毕 基本上先遍历t,1,然后根据t1中的每行数据中的username,去表t2中查找满足条件的记录...如何优化join查询 从上面可以看出,join本质是循环,这里的开销如下: 遍历t1数据,读取数据为t1表的行数,假设行数为n,则复杂度也为n 根据t1的匹配字段username去t2中一行一行的查询数据...进行explain的好习惯,观察SQL的执行过程

    1.3K10

    面试就面试,问我原理干嘛,order by

    id 5)重复步骤 3、4 直到 city 的值不满足查询条件为止 6)对 sort_buffer 中的数据按照字段 username 做快速排序 按照字段 username 做快速排序这个动作,可能在内存中完成...中的数据进行排序,排完后,把数据临时放到磁盘的一个小文件中,然后清空 sort_buffer(这样的话,一个很大的数据,就会被分成若干个临时磁盘文件) 继续回到主键 id 索引树取数据,重复上一步,直到取出所有满足条件的数据...、4 直到不满足 city='南京' 的条件为止 5)对 sort_buffer 中的数据按照字段 username 进行排序 6)遍历排序结果,取前 1000 行,并按照 id 的值回到主键 id 的索引树中取出...这样整个查询过程的流程就变成了: 1)从联合索引 (city, username) 上找到第一个满足 city='南京' 条件的主键 id 2)到主键 id 的索引树上查找到对应的整行数据(回表查询),...2,直到查到第 1000 条记录,或者是不满足 city='南京' 条件时循环结束 如下图所示: 当然了,使用覆盖索引性能上会快很多,但是索引的维护也是需要代价的,这里需要自己做一个权衡取舍~ --

    62530

    四面阿里被问MySQL底层如何实现order by的,瞬间懵了!

    SQL执行流程 初始化sort_buffer,放入city, name, age三字段 从索引city找到第一个满足city=上海的主键id, 即id_x 到主键索引取出整行,取city, name,...age三个字段的值,存入sort_buffer 从索引city取下一个记录的主键id 重复3、4,直到city值不满足查询条件,即主键id_y 对sort_buffer中的数据按name做快排 取排序后结果的前...examined_rows 参与排序的行数。测试表有4000条满足city='上海'的记录,所以为4000。...(city,name)取下一个记录的主键id 重复步骤2、3,直到查到第1000条记录或不满足city='上海’条件时,循环结束 6.2 执行示意图 可见,该查询过程无需临时表,也无需排序。...而且由于(city,name)联合索引本身有序,所以该查询也不用把4000行全都读一遍,只要找到满足条件的前1000条记录即可退出。在这个例子里,只需扫描1000次。

    1.6K30

    4.循环结构在存储过程中的应用(410)

    在复杂的数据库操作中,循环结构扮演着至关重要的角色,因为它们允许存储过程重复执行一系列操作,直到满足特定条件。...在数据库存储过程中,循环结构同样重要,因为它们使开发者能够执行重复的任务,如遍历数据集、重复计算或生成重复的数据行。 循环结构的定义 循环结构是一种编程构造,它重复执行一个代码块,直到满足一个条件。...迭代计算:在需要进行迭代计算的场景中,循环可以用来重复计算直到达到预期结果。 生成数据序列:循环可以用来生成连续的数据序列,如生成连续的数字或日期。...适用场景:需要重复执行操作直到某个条件为真。 示例:检查表中是否有满足特定条件的记录,并在找到之前持续检查。 REPEAT循环 REPEAT循环至少执行一次,然后重复执行直到满足条件。...例如,你可能需要处理直到满足特定条件的所有记录。 循环直到满足特定条件 WHILE循环也可以用于在满足特定条件之前不断执行操作,例如等待某个事件的发生或者某个数据达到特定值。

    14610

    看一遍就理解:order by详解!

    ='深圳’条件的主键 id,也就是图中的id=9; 到主键 id 索引树拿到id=9的这一行数据, 取name、age、city三个字段的值,存到sort_buffer; 从索引树idx_city 拿到下一个记录的主键...继续循环,直到取出所有满足条件的数据。最后把磁盘的临时排好序的小文件,合并成一个有序的大文件。 TPS: 借助磁盘临时小文件排序,实际上使用的是归并排序算法。...id 索引树拿到id=9的这一行数据, 取age和主键id的值,存到sort_buffer; 从索引树idx_city 拿到下一个记录的主键 id,即图中的id=13; 重复步骤 3、4 直到city...从索引idx_city_age取下一个记录主键id 重复步骤 2、3,直到查到第10条记录,或者是不满足city='深圳’ 条件时循环结束。...这是因为:in有两个条件,在满足深圳时,age是排好序的,但是把满足上海的age也加进来,就不能保证满足所有的age都是排好序的。因此需要Using filesort。

    1.3K20

    又见程序媛 | 从索引的创建角度分析热门“面试题”

    在 Oracle 未引入系统统计信息之前,CBO 计算的成本全部是基于 I/O 估算的,引入系统统计信息之后,CBO 计算的成本值依赖于目标 SQL 的对应执行步骤的 I/O 和 CPU 消耗,这就意味...可选择率 Selecticity 是 CBO 特有的概念,指的是施加指定的谓词条件后返回的结果集的行数占未施加任何谓词条件的原始结果集的行数的比率,取值范围是 0-1,值越小表明可选择率越好,可选择率和成本值的估算息息相关...(不算行头)除以目标表的总行数,它可能被 Oracle 用来计算目标表所对应的结果集所占用内存的大小。...比如满足age between 18 and 24条件的数据有100万行,其中60万行是满足boyfreind='no'的,还有40万行是不满足该条件,即使此时数据列boyfriend有直方图,也无法估算出在满足...我们来看看这个rows 4是如何计算而来的: selectivy=selectivy(条件a1=40) * selectivy(条件a2=40) = (1/50) * (1/50) = 1/2500 cardinality

    91740

    MySQL实战第十六讲-“order by”是怎么工作的?

    重复步骤 3、4 直到 city 的值不满足查询条件为止,对应的主键 id 也就是图中的 ID_Y; 6. 对 sort_buffer 中的数据按照字段 name 做快速排序; 7....重复步骤 3、4 直到不满足 city='杭州’条件为止,也就是图中的 ID_Y; 6. 对 sort_buffer 中的数据按照字段 name 进行排序; 7. ...重复步骤 2、3,直到查到第 1000 条记录,或者是不满足 city='杭州’条件时循环结束。...重复执行步骤 2,直到查到第 1000 条记录,或者是不满足 city='杭州’条件时循环结束。...但是由于这条 SQL 语句不是要单独地查一个 city 的值,而是同时查了"杭州"和" 苏州 "两个城市,因此所有满足条件的 name 就不是递增的了。也就是说,这条 SQL 语句需要排序。

    73130

    MySQL深入学习第十六篇-“order by”是怎么工作的?

    重复步骤 3、4 直到 city 的值不满足查询条件为止,对应的主键 id 也就是图中的 ID_Y; 6. 对 sort_buffer 中的数据按照字段 name 做快速排序; 7....重复步骤 3、4 直到不满足 city='杭州’条件为止,也就是图中的 ID_Y; 6. 对 sort_buffer 中的数据按照字段 name 进行排序; 7....重复步骤 2、3,直到查到第 1000 条记录,或者是不满足 city='杭州’条件时循环结束。 如下 图8 所示为 引入 (city,name) 联合索引后,查询语句的执行计划: ?...重复执行步骤 2,直到查到第 1000 条记录,或者是不满足 city='杭州’条件时循环结束。 如下 图10 所示为引入 (city,name,age) 联合索引后,查询语句的执行流程: ?...但是由于这条 SQL 语句不是要单独地查一个 city 的值,而是同时查了"杭州"和" 苏州 "两个城市,因此所有满足条件的 name 就不是递增的了。也就是说,这条 SQL 语句需要排序。

    69020
    领券