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

SQL语句汇总(三)——聚合函数、分组、查询及组合查询

聚合函数: SQL中提供聚合函数可以用来统计、求和、求最值等等。...分组中也可以加入筛选条件WHERE,不过这里一定要注意是,执行顺序为:WHERE过滤→分组→聚合函数。牢记!...HAVING过滤条件: 之前说了分组操作、聚合函数、WHERE过滤执行顺序,那如果我们希望在聚合之后执行过滤条件怎么办? 例,我们想查询平均年龄在20岁以上班级 能用下面的语句吗?...正因为聚合函数在WHERE之后执行,所以这里在WHERE判断条件里加入聚合函数是做不到。...还有种情况就是在查询联接查询时,主查询查询均为同一张表进行操作,为主、查询表加上不同别名能够很好区分哪些列操作是在主查询中进行,哪些列操作是在查询中进行,下文会有实例说明。

4.9K30
您找到你想要的搜索结果了吗?
是的
没有找到

MySQL分组查询聚合函数使用方法(三)

本节课我们介绍MySQL分组查询聚合函数使用方法。 1 GROUP BY分组查询 在 MySQL 中,GROUP BY 关键字可以根据一个多个字段查询结果进行分组。...【任务2】统计各性别和船舱等级生存比例,这时就需要使用GROUP BY性别和船舱等级两个字段进行分组查询。...2 聚合函数 聚合函数(aggregation function)表示在分组基础进行数据统计,得到每组统计结果一种操作。例如,前面提到每个性别的生存概率统计也使用到聚合函数。...在MySQL中,常用聚合函数包括以下几种。...3 总结 以上就是GROUP BY分组查询聚合函数基本用法,在日常很多查询任务中两者通常结合使用,大家可以多加练习使用。下节课我们准备给大家介绍MySQL查询基本用法,敬请期待!

4K20

High cardinality下持续写入Elasticsearch索引进行聚合查询性能优化

High cardinality下持续写入Elasticsearch索引进行聚合查询性能优化 背景 最近使用腾讯云Elasticsearch Service用户提出,对线上ES集群进行查询,响应越来越慢...原因分析 初步分析查询性能瓶颈就在于聚合查询,但是又不清楚为什么查询索引会比较快,而查询正在写入索引会越来越慢。...所以趁机找了些资料了解了下聚合查询实现,最终了解到: 聚合查询会对要进行聚合字段构建Global Cardinals, 字段唯一值越多(high cardinality),构建Global Cardinals...2点执行(SCF使用是UTC时间,所以cron表达式中需要加8个小时): [8de91d0e44dd5f0ad0293c065fe1ea36.png] 总结 经过以上分析与实战,我们最终降低了High...cardinality下持续写入Elasticsearch索引进行聚合查询时延,在利用缓存情况下,聚合查询响应在ms级 相比按天建索引,采用按小时建索引优化方案,增加了部分冗余数据,分片数量也有增加

9.9K123

SQL聚合函数 MAX

%AFTERHAVING - 可选-应用在HAVING子句中条件。 MAX返回与表达式相同数据类型。 描述 MAX聚合函数返回表达式最大值。...通常,表达式查询返回多行中字段名称(包含一个多个字段名称表达式)。 MAX可以在引用表视图SELECT查询查询中使用。...MAX可以在SELECT列表HAVING子句中与普通字段值一起出现。 MAX不能在WHERE子句中使用。 MAX不能在JOINON子句中使用,除非SELECT是查询。...与大多数其他聚合函数不同,ALL和DISTINCT关键字,包括MAX(DISTINCT BY(col2) col1),在MAX中不执行任何操作。 它们是为了SQL-92兼容性而提供。...对于数值,返回刻度与表达式刻度相同。 在派生MAX聚合函数值时,数据字段中NULL值将被忽略。 如果查询没有返回行,或者返回所有行数据字段值为NULL,则MAX返回NULL。

1.1K20

客快物流大数据项目(九十七):ClickHouseSQL语法

在GROUP BY不包括聚合函数,并全部SELECT部分都包含在GROUP BY中时作用一样。...当执行JOIN查询时,因为与其他阶段相比没有进行执行顺序优化:JOIN优先于WHERE与聚合执行。因此,为了显示指定执行顺序,建议使用查询方式执行JOIN。...SELECT,HAVING,ORDER BY子句中表达式列表必须来自于这些“key”聚合函数。被选择列中不能包含聚合函数key之外其他列。...如果查询表达式列表中仅包含聚合函数,则可以省略GROUP BY子句,这时会假定将所有数据聚合成一组空“key”。GROUP BY子句会为遇到每一个不同key计算一组聚合函数值。...在这一行中将包含所有key默认值(零或者空值),以及所有聚合函数所有被选择数据行聚合结果。

3K61

SQL聚合函数 SUM

SQL聚合函数 SUM 返回指定列值之和聚合函数。...注意:SUM可以指定为聚合函数,也可以指定为窗口函数。 本参考页面描述了SUM作为聚合函数使用。 SUM作为一个窗口函数在窗口函数概述中描述。 描述 SUM聚合函数返回表达式和。...通常,表达式查询返回多行中字段名称(包含一个多个字段名称表达式)。 SUM可以在引用表视图SELECT查询查询中使用。...SUM可以在SELECT列表HAVING子句中与普通字段值一起出现。 SUM不能在WHERE子句中使用。 SUM不能在JOINON子句中使用,除非SELECT是查询。...默认情况下,聚合函数使用逻辑(内部)数据值,而不是显示值。 SUM通常应用于具有数值字段表达式。 因为只执行最小类型检查,所以有可能(尽管很少有意义)非数字字段调用它。

1.3K20

SQL聚合函数 MIN

SQL聚合函数 MIN 返回指定列中最小数据值聚合函数。...expression - 任何有效表达式。通常是包含要从中返回最小值名称。 %FOREACH(col-list) - 可选-列名逗号分隔列名列表。...%AFTERHAVING - 可选-应用HAVING子句中条件。 MIN返回与表达式相同数据类型。 描述 MIN聚合函数返回表达式最小值(最小值)。...通常,表达式查询返回多行中字段名称(包含一个多个字段名称表达式)。 MIN可以在引用表视图SELECT查询查询中使用。...MIN可以出现在选择列表HAVING子句中,与普通字段值一起出现。 MIN不能在WHERE子句中使用。除非SELECT是查询,否则不能在联接ON子句中使用MIN。

1.3K20

SQL聚合函数 AVG

SQL聚合函数 AVG 返回指定列值平均值聚合函数。...描述 AVG聚合函数返回表达式平均值。 通常,表达式查询返回多行中字段名称(包含一个多个字段名称表达式)。 AVG可以用于引用表视图SELECT查询查询。...AVG可以出现在SELECT列表HAVING子句中,与普通字段值一起出现。 AVG不能在WHERE子句中使用。 AVG不能在JOINON子句中使用,除非SELECT是查询。...AVG通常应用于具有数值值字段表达式,例如数字字段日期字段。 默认情况下,聚合函数使用逻辑(内部)数据值,而不是Display值。...因为没有执行类型检查,所以可以(尽管很少有意义)非数字字段调用类型检查; AVG计算非数值,包括空字符串(")为零(0)。

3.2K51

sparksql源码系列 | 生成resolved logical plan解析规则整理

任何不包含CTE已内联所有CTE查询查询显然都不会有任何`WithCTE`节点。如果有的话,“WithCTE”节点将与最外层“With”节点所在位置相同。...join策略hint计划节点将插入到与指定名称匹配任何关系(别名不同)、查询公共表表达式顶部。hint解析工作原理是递归遍历查询计划,找到与指定关系别名之一匹配关系查询。...GlobalAggregates Resolution fixedPoint 将包含聚合表达式投影转换为聚合。...UpdateOuterReferences Subquery Once 推送引用外部查询查询聚合表达式下到外部查询块进行评估。...基本上,我们只需要将Alias作为Project(Project列表)聚合聚合表达式窗口(窗口表达式)中顶级表达式

3.6K40

TiDB 源码阅读系列文章(二十一)基于规则优化 II

这里逻辑是当聚合函数按照具有唯一性属性一列多列分组时,下层算子输出每一行都是一个单独分组,这时就可以将聚合函数展开成具体参数列或者包含参数列普通函数表达式,具体代码实现在 rule_aggregation_elimination.go...Query 可以将聚合函数展开为包含参数列内置函数查询: select count(a) from t group by t.pk; 被等价地改写成: select if(isnull(a), 0...另外提一点,对于大部分聚合函数,参数类型和返回结果类型一般是不同,所以在展开聚合函数时候一般会在参数列上构造 cast 函数做类型转换,展开后表达式会保存在作为替换 LogicalAggregation...TiDB 会在 expressionRewriter 逻辑中做两类操作: 查询展开 即直接执行查询获得结果,再利用这个结果改写原本包含查询表达式;比如上述非相关子查询,如果其返回结果为一行记录...对于相关子查询,TiDB 会在 expressionRewriter 中将整个包含相关子查询表达式转化为 LogicalApply 算子。

1.3K40

ClickHouse中,WHERE、PREWHERE子句和SELECT子句使用

WHERE子句:WHERE子句在查询中是最后执行,它作用于从表中读取所有数据。WHERE子句可以包含任意条件,并且可以使用各种函数和操作符进行数据筛选。...PREWHERE子句通常用于过滤数据源中不必要行,以减少读取和处理数据量,提升性能。PREWHERE子句只能包含简单条件,不能使用聚合函数、多个列条件判断等复杂操作。...SELECT子句在ClickHouse中,SELECT子句用于指定要检索表达式,以及执行其他操作(如聚合、过滤、排序等)。SELECT子句支持以下功能和语法:选择列:使用*通配符选择所有列。...表达式:支持使用算术运算符(+、-、*、/等)和函数列和常量进行计算。支持使用逻辑运算符(AND、OR、NOT等)进行条件判断。...限制:支持使用LIMIT子句限制结果中行数。可以指定要返回最大行数。查询:支持使用查询来嵌套关联多个查询

86761

SQL 查询怎么优化?写很深!

关联查询特别之处在于,其本身是不完整:它闭包中包含一些外层查询提供参数 。显然,只有知道这些参数才能运行该查询,所以我们不能像对待非关联查询那样。...实际执行时,查询计划执行器(Executor)在执行到 Filter 时,调用表达式执行器(Evaluator);由于这个条件表达式包含一个标量子查询,所以 Evaluator 又会调用 Executor...下面这个例子中,Filter 条件表达式包含 Q1Q1、Q2Q2 两个子查询。转换之后分别生成了对应 Apply 算子。...ScalarAgg 转换中细节* 细心读者可能注意到,规则 (9) 右边产生聚合函数是 F′F′,多了一个单引号,这暗示它和原来聚合函数 FF 可能是有些不同。那什么情况下会不同呢?...42)) 分成两步来做:定义中间变量 X,先用 Project 计算 X = IF_NULL(o_totalprice, 42),再聚合函数 MIN(X) 进行去关联化即可。

3.4K30

常用SQL语句和语法汇总

SQL常用规则3 COUNT(*)会得到包含NULL数据行数,而COUNT()会得到NULL之外数据行数 聚合函数会将NULL排除在外,但是COUNT(*)例外。...MAX/MIN函数几乎适用于所有数据类型列,SUM/AVG只适用于数值类型列 想要计算值得种类时,可以在COUNT函数前使用关键字DISTINCT 聚合键中包含NULL时,在结果中会以不确定(空行)...定义视图时不要使用ORDER BY子句 视图和表需要同时进行更新,因此通过汇总得到视图无法进行更新 查询作为内层查询会首先执行 标量字查询就是返回单一值查询 在细分组内进行比较时,需要使用关联查询...函数(截取日期元素) CAST函数(类型转换) COALESCE函数(将NULL转换为其他值) CASE 表达式 SQL常用规则6 谓词就是返回值为真值函数 通常指定关联查询作为EXIST参数 作为...EXIST参数查询中经常会使用SELECT * CASE表达式END不能省略 SQL常用规则7 集合运算会除去重复记录,但可以使用ALL选项,保留重复行 进行联结时需要在FROM子句中使用多张表

2.5K50

常用SQL语句和语法汇总

我现在是相当佩服那个老师,他自己从事Android开发,让学生学数据库。那应该算是我第一次接触数据库这种东西,从此它念念不忘(论一个老师学生影响力!)....; SQL常用规则3 COUNT(*)会得到包含NULL数据行数,而COUNT()会得到NULL之外数据行数 聚合函数会将NULL排除在外,但是COUNT(*)例外。...MAX/MIN函数几乎适用于所有数据类型列,SUM/AVG只适用于数值类型列 想要计算值得种类时,可以在COUNT函数前使用关键字DISTINCT 聚合键中包含NULL时,在结果中会以不确定(空行)...,因此通过汇总得到视图无法进行更新 查询作为内层查询会首先执行 标量字查询就是返回单一值查询 在细分组内进行比较时,需要使用关联查询 ABS函数(求绝对值) ABS(数值) MOD函数(求余...ELSE END SQL常用规则6 谓词就是返回值为真值函数 通常指定关联查询作为EXIST参数 作为EXIST参数查询中经常会使用SELECT * CASE表达式END不能省略

3.1K80

SparkSQL内核解析之逻辑计划

节点所包含NamedExpressionSeqContext成员,并其所有节点表达式进行转换,生成NameExpression列表,然后生成Project LogicalPlan,并与(2)中withFilter...消除查询别名,对应SubqueryAlias节点 ReplaceExpression 表达式替换,替换RuntimeReplaceable表达式,通常用来其他类型数据库支持 ComputeCurrentTime...计算一次时间函数表达式,并将其他相同函数替换成计算结果 GetCurrentDatabase 执行CurrentDatabase并获得结果,替换所有获取数据库表达式 RewriteDistinctAggregates...=> OptimizeSubqueries 当SQL语句包含查询时,在逻辑算子树上遇到SubqueryExpression表达式会进一步递归调用Optimizer对子查询计划进行优化 BatchReplaceOperator...用来提取出聚合操作中Python UDF函数,在聚合完成后再执行 BatchPruneFileSourceTablePartitions => PruneFileSourcePartitions 对数据文件中分区进行剪裁操作

2K21

sparksql源码系列 | 最全logical plan优化规则整理(spark2.3)

如果此CTE定义引用了另一个具有非确定性表达式CTE定义,则仍然可以内联当前CTE定义。2.在整个主查询和所有查询中,CTE定义只被引用一次。...目前,我们替换了两种表达式:1.RuntimeReplaceable表达式。2.无法执行聚合表达式,如Every/Some/Any/CountIf 这主要用于提供与其他数据库兼容性。...复杂分组表达式被拉到Aggregate下Project节点,并在分组表达式和不带聚合函数聚合表达式中引用。...OptimizeSubqueries Subquery FixedPoint(1) 优化表达式所有查询查询批处理递归地应用优化器规则。...使用确定性表达式)运算符分隔,且只有聚合函数是顺序无关

2.4K10

数据查询语言QL

聚合函数: SQL提供了下列聚合函数: COUNT(*) 计算元组个数 COUNT() 一列中值计算个数 SUM() 求某一列值总和(此列值必须是数值型) AVG()...    [ORDER BY , ... ] 整个语句执行过程如下: 读取FORM子句中基本表、视图数据,执行笛卡儿积操作; 选取满足WHERE子句中给出条件表达式元组...; 按GROUP子句中指定列值分组,同时提取满足HAVING子句中组条件表达式那些列; 按SELECT子句中给出列名表达式求值输出; ORDER子句输出目标表进行排序,ASC表示升序排列,...* 表示选择所有列; 列表达式意思是一个单列求聚合表达式,即运用上面的聚合函数; 允许表达式中出现+,-,*,/以及列名、常数算数表达式。...在聚合函数中遇到空值时,除了COUNT(*)外,都跳过空值去处理非空值。 集合成员资格比较: 判断元组是否在查询结果(即集合)中操作,叫做”集合成员资格比较“。

2.3K00
领券