首页
学习
活动
专区
圈层
工具
发布

数据库圣经--聚合查询 子查询 分组查询 合并查询

注意:①计算逻辑为 “该列数值总和 ÷ 该列非 NULL 值的行数”(自动忽略 NULL 值);②添加DISTINCT关键字时,会先对列值去重,再基于去重后的数据计算平均值。...5.MIN 函数格式:MIN([DISTINCT] expr)作用:获取指定列的最小值。注意:①支持的类型及比较规则与 MAX 函数一致;②添加DISTINCT关键字不影响结果(最小值具有唯一性)。...HAVING:过滤分组后的结果对GROUP BY计算出的分组结果(比如 “每个部门的员工数”)进行条件判断,只保留符合HAVING条件的分组(比如 “员工数≥2 的部门”)。...适用场景 作为主查询的「条件值」或「字段值」,配合比较运算符(=、>、使用。 常用嵌套位置 WHERE、SELECT、HAVING 子句中。...嵌套在 UPDATE 中(按子查询条件更新) 定义 用子查询的结果作为更新条件,或更新字段的值。

22810

EXPLAIN FORMAT=json和EXPLAIN ANALYZE查询计划解读

当使用索引列等值查询时,与索引列进行等值匹配的对象信息 rows 预估的需要读取的记录条数 filtered 某个表经过搜索条件过滤后剩余记录条数的百分比 Extra 一些额外的信息 select_type...名称 描述 system 表中只有一条记录并且该表使用的存储引擎的统计数据是精确的,比如MyISAM、Memory const 根据主键或者唯一二级索引列与常数进行等值匹配 eq_ref 在连接查询时,...如果被驱动表是通过主键或者唯一二级索引列等值匹配的方式进行访问的(如果该主键或者唯一二级索引是联合索引的话,所有的索引列都必须进行等值比较) ref 通过普通的二级索引列与常量进行等值匹配时来查询某个表...fulltext 全文索引 ref_or_null 对普通二级索引进行等值匹配查询,该索引列的值也可以是NULL值时 index_merge 多个索引合并查询 unique_subquery 针对包含...IN子查询的查询语句中,查询优化器将IN子查询转换为EXISTS子查询,且子查询可以使用到主键进行等值匹配 index_subquery 与unique_subquery类似,只不过访问子查询中的表时使用的是普通的索引

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

    SQL高级查询方法

    WHERE expression [NOT] IN (subquery) 通过未修改的比较运算符引入且必须返回单个值。...否则,为确保消除重复值,必须为外部查询的每个结果都处理嵌套查询。所以在这些情况下,联接方式会产生更好的效果。 子查询的 SELECT 查询总是使用圆括号括起来。...指定用于比较各列的值的逻辑运算符(例如 = 或 )。 可以在 FROM 或 WHERE 子句中指定内部联接;而只能在 FROM 子句中指定外部联接。...但是,money 数据类型的列和 int 数据类型的列之间的 UNION 运算符将执行运算,因为它们可以进行隐式转换。...在不需要常规使用视图时替换视图,也就是说,不必将定义存储在元数据中。 启用按从标量嵌套 select 语句派生的列进行分组,或者按不确定性函数或有外部访问的函数进行分组。

    7.6K20

    MySQL子查询

    子查询的类型A. 单行子查询(Scalar Subquery)单行子查询返回一个单一的值(一个行一个列)。它可以用于在查询条件中进行比较。...多行子查询(Multiple Rows Subquery)多行子查询返回多个值,通常用于与外部查询的某些列进行比较,使用 IN、ANY 或 ALL 等操作符。...多列子查询(Multiple Columns Subquery)多列子查询返回多个列,可以用于 IN 或其他支持多个列的操作符。...子查询的使用场景A. 在 WHERE 子句中使用子查询最常见的用途是通过子查询在 WHERE 子句中进行比较。...尽量使用 JOIN 来替代某些类型的子查询,特别是对于那些没有依赖于外部查询列的子查询。使用适当的索引来加速查询。总结子查询 是嵌套在其他查询中的查询,用于处理复杂的数据筛选、计算等任务。

    1.7K20

    如何用纯SQL查询语句可以实现神经网络?

    我们将会从最内层的子查询开始,然后逐个增加嵌套的外层。 前向传播 首先,我们将权重参数 W 和 W2 设为服从正态分布的随机值,将权重参数 B 和 B2 设置为 0。...模型参数将会被作为上述查询结果的附加列添加。 接下来,我们将计算隐藏层的激活值。我们将使用含有元素 d0 和 d1 的向量 D 表示隐藏层。...然后,我们将对计算出来的值用 softmax 函数来获得每个类的预测概率。...首先,计算每个样本中正确类预测概率对数的负值。交叉熵损失只是这些 X 和 Y 实例中数值的平均值。自然对数是一个递增函数,因此,将损失函数定义为负的正确类预测概率对数很直观。...我们将使用 Bigquery 的函数 save to table 把结果保存到一个新表。我们现在可以在训练集上执行一次推理来比较预测值和预期值的差距。

    3.5K30

    教程 | 没错,纯SQL查询语句可以实现神经网络

    我们将会从最内层的子查询开始,然后逐个增加嵌套的外层。 前向传播 首先,我们将权重参数 W 和 W2 设为服从正态分布的随机值,将权重参数 B 和 B2 设置为 0。...模型参数将会被作为上述查询结果的附加列添加。 接下来,我们将计算隐藏层的激活值。我们将使用含有元素 d0 和 d1 的向量 D 表示隐藏层。...然后,我们将对计算出来的值用 softmax 函数来获得每个类的预测概率。...首先,计算每个样本中正确类预测概率对数的负值。交叉熵损失只是这些 X 和 Y 实例中数值的平均值。自然对数是一个递增函数,因此,将损失函数定义为负的正确类预测概率对数很直观。...我们将使用 Bigquery 的函数 save to table 把结果保存到一个新表。我们现在可以在训练集上执行一次推理来比较预测值和预期值的差距。

    2.7K50

    【重学 MySQL】四十二、单行子查询

    【重学 MySQL】四十二、单行子查询 在MySQL中,子查询(Subquery)是一种嵌套在其他SQL查询中的查询。...单行子查询(Single-row Subquery)是返回单个值的子查询,通常用于与主查询中的某个值进行比较。 单行子查询的基本用法 单行子查询通常用在WHERE子句中,与某个列的值进行比较。...由于它只返回一个值,因此可以使用比较运算符(如=、>、等)来比较。...示例3:使用单行子查询进行等值比较 假设我们要查找薪资与某个特定员工(比如ID为1的员工)相同的所有员工。...注意事项 当子查询可能返回多行时,如果外层查询期望的是单行结果(如使用=进行比较),MySQL会报错。此时,可以使用IN、ANY、ALL或确保子查询确实只返回一行(如通过LIMIT 1)。

    51210

    MySQL 多表查询

    自连接 (Self Join) 作用:将一个表连接到它自身,用于查询表内行与行之间的关系(如员工与经理)。必须使用表别名。...根据返回结果的结构,可分为以下几类: (4.1) 标量子查询 (Scalar Subquery) 定义:返回 单个值(即一行一列)的子查询。...用途:主要用于 WHERE 子句中进行行级别的比较。需要使用括号将多个列括起来进行比较。...= 101; -- 排除员工 101 自己 -- 查找选修了与学生 'Alice' 完全相同的一组课程的学生 (这比较复杂,通常用 JOIN 或 EXISTS 更优,仅作行子查询示例) -- (假设能查询出...这通常用于替代 IN 进行存在性检查,效率可能更高。子查询通常是相关子查询(依赖外部查询的值)。

    29110

    简单了解SQL性能优化工具MySql Explain

    一个涉及到多表的join操作可以避免比较每种的组合情况,优化器选择最优的效果查询对一个集合进行操作,通过explain语句可以获取mysql如何执行语句的信息。...key_len 显示mysql在索引里使用的字节数 ref 显示了之前的表在key列记录的索引中查找值所用的列或常量 rows 为了找到所需的行而需要读取的行数,估算值,不精确。...当使用=、 、>、>=、、BETWEEN 或者 IN 操作符,用常量比较关键字列时,可以使用 range ref:一种索引访问,它返回所有匹配某个单个值的行。...key_len key_len列显示MySQL决定使用的键长度。如果键是NULL,则长度为NULL。使用的索引的长度。在不损失精确性的情况下,长度越短越好 。...ref ref列显示使用哪个列或常数与key一起从表中选择行。 rows rows列显示MySQL认为它执行查询时必须检查的行数。注意这是一个预估值。

    1.8K20

    性能优化-通过explain查询分析SQL的执行计划

    2、每个字段的说明: 1)、id列数字越大越先执行,如果说数字一样大,那么就从上往下依次执行,id列为null的就表是这是一个结果集,不需要使用它来进行查询。...类似,表示这个subquery的查询要受到外部表查询的影响 H:derived:from字句中出现的子查询,也叫做派生表,其他数据库中可能叫做内联视图或嵌套select 3)、table 显示的查询表名...或者多列主键、唯一索引中,使用第一个列之外的列作为等值查找也会出现,总之,返回数据不唯一的等值查找就可能出现。...值的比较。...G:unique_subquery:用于where中的in形式子查询,子查询返回不重复值唯一值 H:index_subquery:用于in形式子查询使用到了辅助索引或者in常数列表,子查询可能返回重复值

    1.7K10

    MySQL 子查询

    2.优势 使用子查询的主要优势有: 它们允许结构化查询,以便可以隔离语句的每个部分。 它们提供了需要复杂连接和并集的操作的替代方法。 许多人发现子查询比复杂的连接或联合更具可读性。...标量子查询(Scalar Subquery):返回单个值(一行一列)的子查询。 行子查询(Row Subquery):返回单行结果(一行多列)的子查询。...当 WHERE 条件中的子查询返回多行数据时,不能再使用普通的比较运算符,因为它们不支持单个值和多个值的比较;如果想要判断某个字段是否在子查询返回的数据列表中,可以将子查询与 IN、ALL、ANY/SOME...ALL 必须跟在比较运算符之后,如果表达式与子查询返回列中的所有值的比较结果为 TRUE,则返回 TRUE。...ANY 关键字必须跟在比较运算符之后,如果表达式与子查询返回列中的任何值的比较结果为 TRUE,则返回 TRUE。

    2.1K10

    Mysql 中令人稀里糊涂的Explain

    然后看执行计划的前两条记录的id值都为1,说明这两条记录对应的表进行连接查询,需要注意的是第二条记录的table列的值是subquery2>,说明该表其实就是id为2对应的子查询执行之后产生的物化表,...子查询,而且子查询可以使用到主键进行等值匹配的话,那么该子查询执行计划的type列的值就是unique_subquery index_subquery : index_subquery与unique_subquery...这两个属性比较好理解,但是注意一点: 在使用index访问方法来查询某个表时,possible_keys列是空的,而key列展示的是实际使用到的索引 注意: possible_keys列中的值并不是越多越好...、ref、ref_or_null、unique_subquery、index_subquery其中之一时,ref列展示的就是与索引列作等值匹配的是一个常数还是某个列。...当然,对于优化被驱动表的查询来说,最好是为被驱动表加上效率高的索引,如果实在不能使用索引,并且自己的机器的内存也比较大可以尝试调大join_buffer_size的值来对连接查询进行优化。

    62850

    MySQL DQL 子查询

    2.优势 使用子查询的主要优势有: 它们允许结构化查询,以便可以隔离语句的每个部分。 它们提供了需要复杂连接和并集的操作的替代方法。 许多人发现子查询比复杂的连接或联合更具可读性。...标量子查询(Scalar Subquery):返回单个值(一行一列)的子查询。 行子查询(Row Subquery):返回单行结果(一行多列)的子查询。...当 WHERE 条件中的子查询返回多行数据时,不能再使用普通的比较运算符,因为它们不支持单个值和多个值的比较;如果想要判断某个字段是否在子查询返回的数据列表中,可以将子查询与 IN、ALL、ANY/SOME...ALL 必须跟在比较运算符之后,如果表达式与子查询返回列中的所有值的比较结果为 TRUE,则返回 TRUE。...ANY 关键字必须跟在比较运算符之后,如果表达式与子查询返回列中的任何值的比较结果为 TRUE,则返回 TRUE。

    1.2K00

    MySQL EXPLAIN详解

    key_len 显示mysql在索引里使用的字节数 ref 显示了之前的表在key列记录的索引中查找值所用的列或常量 rows 为了找到所需的行而需要读取的行数,估算值,不精确。...通过把所有rows列值相乘,可粗略估算整个查询会检查的行数 Extra 额外信息,如using index、filesort等 id id是用来顺序标识整个查询中SELELCT 语句的,在嵌套查询中id...当使用=、 、>、>=、、BETWEEN 或者 IN 操作符,用常量比较关键字列时,可以使用 range ref 一种索引访问,它返回所有匹配某个单个值的行。...key_len key_len列显示MySQL决定使用的键长度。如果键是NULL,则长度为NULL。使用的索引的长度。在不损失精确性的情况下,长度越短越好 。...ref ref列显示使用哪个列或常数与key一起从表中选择行。 rows rows列显示MySQL认为它执行查询时必须检查的行数。注意这是一个预估值。

    1.6K90

    【MySQL 文档翻译】理解查询计划

    (这个应该是联合索引可以用到前几个的情况)refref 列显示将哪些列或常量与 key 列中指定的索引进行比较以从表中选择行.如果值为 func, 则使用的值是某个函数的结果....因为只有一行, 所以这一行中列的值可以被优化器的其余部分视为常量. const 表非常快, 因为它们只被读取一次.当您将 PRIMARY KEY 或 UNIQUE 索引的所有部分与常量值进行比较时就是使用...比较值可以是常量或使用在此表之前读取的表中的列的表达式....这个版本在几秒钟内执行.可以进行第二次更改以消除 tt.AssignedPC = et_1.EMPLOYID 和 tt.ClientID = do.CUSTNMBR 比较的列长度不匹配:mysql> ALTER...rows 列是来自 MySQL 连接优化器的有根据的猜测. rows 通过将产品与查询返回的实际行数进行比较, 检查这些数字是否更接近事实.

    2.8K20

    explain的属性详解与提速百倍的优化示例

    id列为null则表示这一行是一个结果集,不需要使用它来进行查询。 select_type 显示每个select子句的查询类型。...ref_or_null:与ref方法类似,只是增加了null值的比较。实际用的不多。 unique_subquery:用于where中的in形式子查询,子查询返回不重复值唯一值。...index_subquery:用于in形式子查询使用到了辅助索引或者in常数列表,子查询可能返回重复值,可以使用索引将子查询去重。...哪些列或常量被用于查找索引列上的值。 rows MySQL根据表统计信息及索引选用情况,估算mysql查询过程中遍历的行数,不是准确值。...表,rows = 1表示,每个关联都只锁定了一条记录,效率比较高。

    1.6K30

    mysql explain ref列_MySQL EXPLAIN详解

    key_len 显示mysql在索引里使用的字节数 ref 显示了之前的表在key列记录的索引中查找值所用的列或常量 rows 为了找到所需的行而需要读取的行数,估算值,不精确。...通过把所有rows列值相乘,可粗略估算整个查询会检查的行数 Extra 额外信息,如using index、filesort等 id id是用来顺序标识整个查询中SELELCT 语句的,在嵌套查询中id...当使用=、 、>、>=、、BETWEEN 或者 IN 操作符,用常量比较关键字列时,可以使用 range ref 一种索引访问,它返回所有匹配某个单个值的行。...ref ref列显示使用哪个列或常数与key一起从表中选择行。 rows rows列显示MySQL认为它执行查询时必须检查的行数。注意这是一个预估值。...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    4.9K60

    3小时吃掉HiveSQL:从基础语法到性能优化

    4,分桶 每个分区中的数据又可以基于表的某一列的散列函数的值被划分为桶。 分桶表用于需要高效连接操作、数据抽样和均匀负载的场景,特别是在大数据集和复杂查询中。...• 6,SELECT: 选择需要的列, 若使用窗口函数,也在这个环节执行。 • 7,DISTINCT: 去除重复的记录。 • 8,ORDER BY: 对记录进行排序。...常用的聚合函数包括: • COUNT:计算分组中的行数 • SUM::计算分组中数值列的总和 • AVG:计算分组中数值列的平均值 • MAX: 计算分组中数值列的最大值 • MIN:计算分组中数值列的最小值...• COLLECT_SET: 将分组中的值收集到一个集合中(去重) • COLLECT_LIST: 将分组中的值收集到一个列表中(不去重) 可以在GROUP BY子句中使用HAVING子句来过滤分组。...(谨慎使用,比较复杂,代码可读性差) 下面我们看join优化的一些范例代码。

    1.5K12

    mysql explain 详解

    叫做 ref 是因为索引要跟某个参考值相比较。... IN 子查询的查询语句中,如果查询优化器决定将 IN 子查询转换为 EXISTS 子查询,而且子查询可以使用到主键进行等值匹配的话,那么该子查询执行计划的 type 列的值就是 unique_subquery..., 可通过该列计算查询中使用的索引的长度(key_len显示的值为索引字段的最大可能长度,并非实际使用长度,即key_len是根据表定义计算而得,不是通过表内检索出的) 不损失精确性的情况下,长度越短越好...ref  当使用索引列等值查询时,与索引列进行等值匹配的对象信息,可能是const(常量匹配),字段名匹配,方法匹配等 rows 估算结果行数 表示MySQL根据表统计信息及索引选用情况,估算的找到所需的记录所需要读取的行数...如果查询中使用到了内部的临时表,在执行计划 的 Extra 列将会显示 Using temporary 提示 Start temporary, End temporary           查询优化器会优先尝试将

    1.2K20

    MySQL EXPLAIN详解

    复合查询:对于包含子查询或UNION的复杂查询,id可能包含多个值,每个值代表查询计划中的一个步骤。 id值的排序 从1开始递增:对于单一查询,id值从1开始递增,依次标识查询中的每个步骤。...select_type 查询的类型,常见的有: SIMPLE: 简单的SELECT查询,不包含子查询或UNION。 PRIMARY: 最外层的SELECT查询。 SUBQUERY: 子查询。...partitions 查询中涉及的分区(如果有)的信息。分区是MySQL中一种对表进行水平分割的技术,可以根据某个列的值将表数据划分为不同的分区。...例如,在使用主键或唯一索引进行连接查询时。 ref:非唯一索引查找 表示使用非唯一索引进行等值比较。例如,通过普通索引查找某个值。...key_len值为1的情况 如果key_len的值是1,表示使用的是单列索引,索引列的长度为1个字节。 多列索引的情况 如果使用的是多列索引,key_len将显示这些列长度之和。

    1.1K10
    领券