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

SQL 聚合查询

AVG:求平均值。 MAX:求最大值。 MIN:求最小值。...SQL 存在一种很特殊的值类型 NULL,如果 COUNT 指定了具体列,则统计时会跳过此列值为 NULL 的行,而 COUNT(*) 由于未指定具体列,所以就算包含了 NULL,甚至某一行所有列都为...SELECT SUM(cost) FROM test SUM 遇到 NULL 值时当 0 处理,因为这等价于忽略。 AVG AVG 求所有项均值,因此必须作用于数值字段,而不能用于字符串。...SELECT AVG(cost) FROM test AVG 遇到 NULL 值时采用了最彻底的忽略方式,即 NULL 完全不参与分子与分母的计算,就像这一行数据不存在一样。...MAX、MIN MAX、MIN 分别求最大与最小值,上面不同的时,也可以作用于字符串上,因此可以根据字母判断大小,从大到小依次对应 a-z,但即便能算,也没有实际意义且不好理解,因此不建议对字符串求极值

2.4K31

分享:Oracle sql语句优化

改为 a>0 or a0 a'' 改为 a>'' 3、IS NULL 或IS NOT NULL操作(判断字段是否为空) 判断字段是否为空一般是不会应用索引的,因为B树索引是不索引空值的。...用其它相同功能的操作运算代替, a is not null 改为 a>0 或a>''等。 不允许字段为空,而用一个缺省值代替空值,如业扩申请中状态字段不允许为空,缺省为申请。...) , ORACLE 将不接受下一 条具有相同A,B 值(123,null)的记录(插入).然而如果所有的索引列都为空,ORACLE 将认为整个键值为空而空不等于空....6、用EXISTS 替换DISTINCT: 当提交一个包含一对多表信息(比如部门表和雇员表)的查询时,避免在SELECT 子句中使用DISTINCT....这也是一条简单而重要的规则,当仅引用索引的第二个列时, 优化器使用了全表扫描而忽略了索引 用UNION-ALL 替换UNION ( 如果有可能的话): 当SQL 语句需要UNION 两个查询结果集合时

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

    Oracle查询性能优化

    当ORACLE找出执行查询和Update语句的最佳路径时, ORACLE优化器将使用索引....和IS NOT NULL 避 免在索引中使用任何可以为空的列,ORACLE性能上将无法使用该索引.对于单列索引,如果列包含空值,索引中将不存在此记录....如果至少有一个列不为空,则记录存在于索引中.举例: 如果唯一性索引建立在表的A列和B列上, 并且表中存在一条记录的A,B值为(123,null) , ORACLE将不接受下一条具有相同A,B值(123,...为了避免ORACLE对你的SQL进行隐式的类型转换, 最好把类型转换用显式表现出来. 注意当字符和数值比较时, ORACLE会优先转换数值类型到字符类型 6、索引的一些“脾气” a....除了使用索引,我们还有其他能减少资源消耗的方法: 1、用EXISTS替换DISTINCT: 当提交一个包含一对多表信息(比如部门表和雇员表)的查询时,避免在SELECT子句中使用DISTINCT.

    2.3K20

    JS算法之二叉树、二叉搜索树

    (root.left) ==null && root.right ==null) return path在遇到叶节点之前就结束的路径,应该返回0 如果在某个「非叶子节点,不存在左子树」,那当遍历左子树时...所以针对这种情况需要做一个容错处理if(root == null) return 0;----向下的路径节点值之和题目描述:❝ 给定一棵二叉树和一个值sum,求二叉树中节点值之和等于sum的路径的数目。...在路径上移动时把所有累加的节点值之和都保存下来,就容易知道是否存在从「任意节点出发的值为给定sum的路径」当遍历到一个节点时,先累加从根节点开始的路径上的节点值之和,再计算到它的左右子节点的路径的节点值之和...「键」是累加的节点值之和「值」是每个节点值之和出现的次数当遍历到一个节点时,就把当前的节点值累加到path中 path += root.val「在已保存的路径前缀和中查找是否存在前缀和刚好等于当前节点到根节点的前缀和...,「因此**while**循环执行的次数等于二叉搜索树的深度」----所有大于或等于节点的值之和题目描述:❝ 给定一棵二叉搜索树,请将它的每个节点的值替换成树中大于或等于该节点值的所有节点值之和。

    62851

    如何写出更快的 SQL (db2)

    IS NULL 与 IS NOT NULL 数据库不能用 NULL 作索引,任何包含 NULL 值的列都将不会被包含在索引中。...即使索引有多列这样的情况下,只要这些列中有一列含有 NULL ,该列就会从索引中排除。也就是说如果某列存在 NULL 值,即使对该列建索引也不会提高性能。...任何在 where 子句中使用 IS NULL 或 IS NULL 的语句优化器是不使用索引的。 联接列 对于有联接的列,即使最后的联接值为一个静态值,优化器是不会使用索引的。...如果你没有COMMIT 事务,db2 可以将数据恢复到删除之前的状态,而当运用 TRUNCATE 时, 回滚段不再存放任何可被恢复的信息,当命令运行后,数据不能被恢复,因此很少的资源被调用,执行时间也会很短...这也是一条简单而重要的规则,当仅引用索引的第二个列时,优化器使用了全表扫描而忽略了索引 。

    2.2K20

    SQL系列(一)快速掌握Hive查询的重难点

    语法 相信大家在都是以MySQL或者SQLite入门学习的,所以当开始转写Hive查询时,你会发现内心毫无波动,这就和会骑自行车的人一定会骑电动车是一样的。 当然,如果硬要找出一些差异,也是有的。...-- 非数值型字符串判断,MySQL会默认处理为'' select ''=1 -- 返回结果0 ,'age'=1.5 -- 返回结果0 Hive和MySQL在数据类型上有一定差异,因此在进行数值与字符串转换时...尤其是正则替换和正则提取,在日常业务中使用频率极高,所以掌握一定的正则知识是必要的。限于篇赋,这两点在后续的SQL实战中再做详细介绍。...为月末时,计算结果同样为月末,而不是对应的日期。...因此在实际操作中,在做group 强化之前,应将明细数据中每个维度的NULL值进行替换为'未知',用于标记维度本身的取值;group 强化之后,应将每个维度的NULL值再进行替换为'全部',用以标记group

    3.1K22

    MySQL算术比较逻辑位运算符与正则全解

    在两个操作数均为NULL时,其返回值为1,而不为NULL; 当一个操作数为NULL时,其返回值为0,而不为NULL。...运算符表示当给定的值为0时返回1;当给定的值为非0值时返回0;当给定的值为NULL时,返回NULL。 SELECT NOT 1, NOT 0, NOT(1+1), NOT !...'SA_REP'); 逻辑与运算符 逻辑与(AND或&&)运算符是 当给定的所有值均为非0值,并且都不为NULL时,返回1; 当给定的一个值或者多个值为0时则返回0; 否则返回NULL。...1,否则返回0; 当一个值为NULL,并且另一个值为非0值时,返回1, 否则返回NULL;当两个值都为NULL时,返回NULL。...逻辑异或运算符 逻辑异或(XOR)运算符是当 给定的值中任意一个值为NULL时,则返回NULL; 如果两个非NULL的值都是0或者都不等于0时,则返回0; 如果一个值为0,另一个值不为0时,则返回1。

    3.9K30

    面试算法题

    给一颗多叉树,求 从一个节点出发到其它所有节点的距离之和 的最小值。 树形 dp。一般两遍 dfs 就能解决。...求长度为 2n 的字典序第 k 大的合法括号序列,合法是符合下面两个要求: 1)空串 2)若 s 合法,()s、(s)也合法 思路是长度为2i的合法序列有\(2^{i-1}\)个,所以可以递归构造。...求斜率最大的两个点。 按 x 坐标排序,然后斜率最大的两个点一定是相邻的,所以再两个两个判断一遍即可。 6. 有序数组找出出现超过一半的数。如果不知道有没有超过一半的,怎么判断。...n 个武器,告诉你每个武器的五个属性值,现在要选择 k 个武器,最大化这五个属性的最大值之和,n,k 都是10000以内。 k>=5时,可以直接取每个属性的最大值。...k时,我们用mask[i]表示 i 代表的二进制位上为1的所有位置对应的属性之和最大的一个武器(用 pair 记录)。

    36410

    【day11】LeetCode(力扣)练习【1652.拆炸弹】【235. 二叉搜索树的最近公共祖先】【733. 图像渲染】

    如果 k > 0 ,将第 i 个数字用 接下来 k 个数字之和替换。 如果 k 0 ,将第 i 个数字用 之前 k 个数字之和替换。.../ 示例 2: 输入:code = [1,2,3,4], k = 0 输出:[0,0,0,0] 解释:当 k 为 0 时,所有数字都被 0 替换。...解题思路: 我们首先创建一个与code数组等长的新数组,用于存放解密后的拆弹密码; 当 k = 0 时,直接将存放密码的新数组用 0 填充并返回。...当 k > 0 时,我们直接遍历求和数组当前元素位置的后K位元素,为了实现循环数组效果,求和的k个元素的下标需要与code数组长度进行取模。...当 k 0 时,情况类似,但因为k为负数,我们取模之前还需要为前看k个下标再加上一个code数组的长度再与其取模,同时循环的条件也须要进行调整。

    42320

    TypeScript算法题实战——剑指 Offer篇(6)

    本章节包括的题目有(难度是我个人感受的难度,非官方标准): 题目 难度 圆圈中最后剩下的数字 困难 股票的最大利润 中等 求1+2+…+n 中等 不用加减乘除做加法 困难 构建乘积数组 中等 把字符串转换成整数...return 0; return n + sumNums(n - 1); }; 由于题目不允许使用if关键字,所以我们使用&&运算符替换,当n大于0时都会运行后面(n += sumNums...写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。...解析负整数:当字符串以负号(-)开头时,parseInt() 会将其视为一个负整数。 处理非数字字符:当字符串中包含非数字字符时,parseInt() 将停止解析,并返回已解析的部分。...[13,12],数位之和为1+3+1+2=7,所以m = 2, n = 3, k = 1时,满足条件的有[0,0],[0,1],[1,0]三个结果 m = 3, n = 1, k = 0时,满足条件的有

    11210

    第04章_运算符

    在两个操作数均为 NULL 时,其返回值为 1,而不为 NULL;当一个操作数为 NULL 时,其返回值为 0,而不为 NULL。...运算符表示当给定的值为 0 时返回 1;当给定的值为非 0 值时返回 0;当给定的值为 NULL 时,返回 NULL。...0 值,并且都不为 NULL 时,返回 1;当给定的一个值或者多个值为 0 时则返回 0;否则返回 NULL。...NULL,并且任何一个值为非 0 值时,则返回 1,否则返回 0;当一个值为 NULL,并且另一个值为非 0 值时,返回 1,否则返回 NULL;当两个值都为 NULL 时,返回 NULL。...4.逻辑异或运算符 逻辑异或(XOR)运算符是当给定的值中任意一个值为 NULL 时,则返回 NULL;如果两个非 NULL 的值都是 0 或者都不等于 0 时,则返回 0;如果一个值为 0,另一个值不为

    29210

    二叉树刷题总结:二叉树的属性

    我们可以通过递归的方式求解此题: 递归函数的传入的参数为二叉树的根节点,返回值为二叉树的高度; 递归的终止条件为当节点为空节点时,返回高度为 0; 先求出它左子树的高度,然后再求出它右子树的高度,俩高度的最大值...确定递归的参数和返回值,参数为传入的根节点,记录每条路径的节点值数组path,以及路径结果数组res; 当遇到叶子节点的时候终止,并将路径节点值数组里的数值转换成字符串,然后加入到结果数组; 递归的单层逻辑为...; } 用后序遍历找出所有的左叶子节点数值之和,递归方式如下: 递归函数的传参为根节点,返回值为左叶子节点之和; 递归终止条件为 root == null 返回 0; 单层递归逻辑:当遇到左叶子节点的时候...给定一个二叉树,在树的最后一行找到最左边的值。...返回值为 void; 当遇到叶子节点的时候,为终止条件,并开始统计最大深度; 确定单层递归逻辑,当不是叶子节点时,则继续遍历左子树和右子树,并记得要回溯; 代码如下: // 递归法 class Solution

    34510

    【数据库】常用数据库简介

    可以存放在Excel中的数据 数据表有明确的结构, 结构不会频繁变化 列名, 每一列有固定的类型, 每一列大小范围可以预计 用来存储关系型数据的就是关系型数据库 常用的关系型数据库..., 都会做一些微调 标准SQL 和 Mysql /Oracle SQL 大多数语句都是一样的, 但是有一些细节上的差别 sql 语句, 如果是针对Mysql来写的, 迁移到其它的数据库, 这些SQL语句可能还需要调整...语句只能查询出价格=200 价格=800的商品, 而不是0<价格<800 逻辑查询 select * from product where price >=200 and price值会过滤 sum() 求和 avg() 求平均 min() 最小值 max() 最大值 # 聚合查询 # 查询所有商品的条目数 select count(*) from product; select...非空+唯一 非空 not null 唯一 unique 默认值 default

    11110

    JS算法_知识点精讲

    例如,100/1000等;那最大值,就是用0等替换 「同向双指针」 :right先动,left视情况而动 ---- 乘积大于或等于k的最短子数组 题目描述: ❝输入一个「正整数」组成的数组和一个正整数target...],target的值为2 输出 2 ❞ 分析 求「连续子数组之和」,但是数组不是「正整数」,所以「同向双指针」作废 双指针作废,那我们就采用前i个数字之和的处理方式 从头到尾扫描数组时,求「前i个数字之和...「两个选项的最大值」 f(i) = max(f(i-2)+nums[i],f(i-1)) 状态转移方程还有一个「隐含条件」,即i大于或等于2 当i等于0时,f(0) = nums[0] 当i等于1时,f...此时只有一条「从左到右」的路径,因此f(0,j)为「最上面一行从grid[0][0]开始到grid[0][j]为止所有格子的值之和」 当j等于0时,机器人位于格子的「最左边的一列」,机器人不可能从某个位置...此时只有一条「从上到下」的路径,因此f(i,0)为「最左边一列从grid[0][0]开始到grid[i][0]为止所有格子的值之和」 当行号i、列号j都大于0时,机器人有两种方法可以到达坐标为(i,j)

    2.2K10

    Mysql索引失效的场景

    索引失效分析工具: 可以使用explain命令加在要分析的sql语句前面,在执行结果中查看key这一列的值,如果为NULL,说明没有使用索引。...当or左右查询字段只有一个是索引,该索引失效,只有当or左右查询字段均为索引时,才会生效; 2.复合索引未用左列字段,即不是使用第一列索引,索引失效; 3.like以%开头,当like前缀没有%,后缀有...%时,索引有效; 4.需要类型转换; 5.where中索引列有运算,或者索引列使用了函数;; 6.where中在索引字段上使用not,,!...(索引是不索引空值的,所以这样的操作不能使用索引,可以用其他的办法处理,例如:数字类型,判断大于0,字符串类型设置一个默认值,判断是否等于默认值即可。) ?...没必要用索引的场景 1.唯一性差; 2.频繁更新的字段不用(更新索引消耗); 3.where中不用的字段; 4.索引使用时,效果一般; 索引并不是时时都会生效的,比如以下几种情况,将导致索引失效:

    7K40

    MySQL 字段为 NULL 的5大坑,99%人踩过

    1.count 数据丢失我们都知道,count是用来计数的,当表中某个字段存在NULL 值时,就会造成count计算出来的数据丢失,如下 SQL 所示:查询执行结果如下:从上述结果可以看出,count(...*)和count(name)的值不一样,即当使用的是 count(name) 查询时,就丢失了两条值为 NULL 的数据。...2.distinct 数据丢失当使用语句count(distinct column1,column2)时,如果有一个字段值为空,即使另一列有不同的值,那么查询的结果也会将数据丢失, SQL如下所示:查询执行结果如下...为了演示这个问题,首先我们先构建一张表和一些测试数据:表中原始数据如下:接下来我们使用 sum 查询,执行以下 SQL:查询执行结果如下:当查询的结果为 NULL 而非 0 时,就可以导致空指针异常。...值,原因是在 SQL 语句中,如果在 null 前换行,影响可读性;而 ISNULL(column) 是一个整体,简洁易懂。

    97840

    mysql必备语句

    数据库表就是一个多行多列的表格。在创建表时,需要指定表的列数,以及列名称,列类型等信息。而不用指定表格的行数,行数是没有上限的。 当把表格创建好了之后,就可以向表格中添加数据了。...当想查询姓名中包含a字母的学生时就需要使用模糊查询了。...当只查询emp表的sal字段时,那么会出现重复记录,那么想去除重复记录,需要使用DISTINCT: SELECT DISTINCT sal FROM emp; 查看雇员的月薪与佣金之和 因为sal和comm...SELECT *,sal+comm FROM emp; comm列有很多记录的值为NULL,因为任何东西与NULL相加结果还是NULL,所以结算结果可能会出现NULL。...第一页记录起始行为0,一共查询10行; 第二页记录起始行为10,一共查询10行; 第三页记录起始行为20,一共查询10行; 5.9多表连接查询 5.9.1内连接 上面的连接语句就是内连接,但它不是SQL

    12.7K20
    领券