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

SQL中的聚合函数使用总结

一般在书写sql的是时候很多时候会误将聚合函数放到where后面作为条件查询,事实证明这样是无法执行的,执行会报【此处不允许使用聚合函数】异常。为什么会报异常呢?...其原因很简单: having放在group by 的后面 group by 后面只能放非聚合函数的列 where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据...那聚合函数在什么情况下使用或者应该处在sql文中的哪个位置呢 聚合函数只能在以下位置作为表达式使用: select 语句的选择列表(子查询或外部查询); compute 或 compute by 子句...; having 子句; 其实在诸多实际运用中,聚合函数更多的是辅助group by 使用,但是只要我们牢记where的作用对象只是行,只是用来过滤数据作为条件使用。...常见的几个聚合函数 求个数:count 求总和:sum 求最大值:max 求最小值:min 求平均值:avg 当然还有其他类型的聚合函数,可能随着对应sql server不同,支持的种类也不一样。

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

SQL踩坑:计算函数or聚合函数的字段平级,导致分辨不出彼此的别名问题

问题1:SUM()函数使用小技巧 错误案例: -- 统计学校表school中性别字段student_sex(student_sex取值为girl或者boy)的女生总人数 SUM(student_sex...0 END) AS girls, -- 女生总数 复制代码 问题2:计算函数or聚合函数的字段平级,导致分辨不出彼此的别名问题 错误案例: SELECT COUNT(*) AS total,...END) AS boys, -- 计算男生总数 (sch.boys / stu.total) AS "学校中男生所占的比例" FROM school sch -- 从学校表中查询 GROUP...注意:这里的别名和表的别名sch是同级别的,所以不可以使用sch.boys的方式去获得学校男生的总数量! 解决方案: 两层SELECT嵌套查询。...student_sex = 'boy' THEN 1 ELSE 0 END) AS boys, -- 计算男生总数 FROM school sch -- 从学校表中查询,表别名为sch GROUP

64500

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

CTESubstitution Substitution fixedPoint 根据以下条件,使用节点进行分析,并用CTE参考或CTE定义替换子计划:1.如果处于传统模式,或者如果查询是SQL命令或DML...by”中的序号替换为UnresolvedOrdinal表达式,其中UnresolvedOrdinal表示按order by或group by使用的未解析序号。...它只根据函数标识符执行简单的存在性检查,以快速识别未定义的函数,而不触发关系解析,这在某些情况下可能会导致潜在的昂贵的分区/schema发现过程。...的许多方言中,在order/sort by和group by子句中使用的顺序位置是有效的。...2.解析lambda函数函数表达式树中使用的lambda变量。请注意,我们允许使用当前lambda之外的变量,这可以是在外部范围中定义的lambda函数,也可以是由计划的子级生成的属性。

3.6K40

Spark必知必会 | Spark SQL自定义函数UDF、UDAF聚合函数以及开窗函数使用

一、UDF的使用 1、Spark SQL自定义函数就是可以通过scala写一个类,然后在SparkSession上注册一个函数并对应这个类,然后在SQL语句中就可以使用函数了,首先定义UDF函数,那么创建一个...,如下图所示: 3、在表中加一列字段id,通过GROUP BY进行分组计算,如 4、在sql语句中使用group_age_avg,如下图所示: 输出结果如下图所示: 5、完整代码如下: package...="SELECT id, group_age_avg(age) avg_age FROM person GROUP BY id" sparkSession.sql(sql).show()...scalaDouble * @return */ override def outputEncoder: Encoder[Double] = Encoders.scalaDouble } 3、而使用聚合函数就不能通过注册函数使用了...,需要通过Dataset对象的select来使用,如下图所示: 执行结果如下图所示: 因此无类型的用户自定于聚合函数:UserDefinedAggregateFunction和类型安全的用户自定于聚合函数

3.4K10

浅谈 Apache Doris FE 处理查询 SQL 源码解析

一、前言 在使用 Apache Doris 时,我们可以通过 Apache Doris FE Web 页面或者 Mysql 协议执行 SQL 语句,但是对于 Apache Doris 背后如何对 SQL...之后会进行 analyze ,Apache Doris SQL 解析使用的 Parse 是 Java CUP Parser,语法规则 定义的文件在 sql_parser.cup。...SQL 的合法性检查:窗口函数不能 DISTINCT,HLL 和 Bitmap 列不能 sum, count, where 中不能有 grouping 操作等。...如果重写后,有部分节点被成功改写,比如, 1 > 2 被改写成 Flase,那么就会再触发一次语法和语义分析的过程。...Doris 在生成单机 Plan 的时候主要进行了以下工作或优化 : Slot 物化:指确定一个表达式对应的列需要 Scan 和计算,比如聚合节点的聚合函数表达式和 Group By 表达式需要进行物化

1.9K31

Impala 3.4 SQL查询梳理(一)

SelectStmt的analyze方法,如下所示: // SelectStmt.analyze() public void analyze(Analyzer analyzer) throws AnalysisException...执行计划生成之后,Backend模块就会根据这些执行计划执行实际的扫描、聚合运算等操作,最终返回结果。...LiteralExpr,用来保存各种常量的值,例如布尔保存在BoolLiteral中,字符串保存在StringLiteral中等等,目前主要就包括图中的这其中; FunctionCallExpr,各种函数调用...id<=10 group by id,user order by id desc; 结合上面的几个类图,我们可以看看上述的SQL会被解析成什么样的: SelectList包含三个SelectListItem...以第一个为例,它的操作符是>=,本身又包含两个child,分别是id对应的SlotRef以及10对应的NumericLiteral; groupingExprs_是一系列的group by成员集合,这里主要就是包括两个

66830

SparkSQL真的不支持存储NullType类型数据到Parquet吗?

最近后台有小伙伴提了一些实际工作中使用Spark遇到的问题,笔者挑选了几个相对常见的问题,分别从场景模拟/问题现象、问题分析、解决方案三个层面,来深入分析这些问题,并且提供一个解决类似问题的思路。...>> 问题1 使用SparkSQL(2.4版本)往存储格式为parquet的Hive分区表中存储NullType类型的数据时报错: org.apache.spark.sql.AnalysisException...解决方案 -- 使用insert sql进行数据的保存 insert overwrite table test_partition_tab partition(partitionCol=20201009.../exclusions> >> 问题3 通过SparkSQL,对两个存在map类型字段的Hive表进行union操作,报如下错误: org.apache.spark.sql.AnalysisException...2 id, map("k1","v1","k2","v2") map 2)报错信息 org.apache.spark.sql.AnalysisException: Cannot have map type

2.6K30

硬核干货 | 基于Impala的网易有数BI查询优化总结

预计Q1上线使用。...下面列举SQL查询的优化案例。 问题举例 时间/日期转换导致性能问题 就公司内部而已,事实表的数据一般以时间作为分区字段,如每天一个分区,分区字段类型为字符串。...查询错误原因分析和收敛 业务在使用有数BI时会出现因为Impala侧查询错误导致取数结果或BI报告无法生成,严重影响有数产品的体验。...SQL自身错误 主要是SQL语法、参数限制和UDF误用等,举例如下: org.apache.impala.common.AnalysisException: aggregate function not...目前已完成音乐Impala集群升级; 引入Alluxio作为Impala与HDFS间的缓存层; 基于历史查询信息的表统计信息自动计算功能; 基于物化视图(临时表)的SQL重写功能,通过创建预聚合表来优化查询性能

1.3K20

【数据库设计和SQL基础语法】--查询数据--聚合函数

COUNT 函数SQL 中常用的聚合函数之一,用于快速计算行数。在数据统计和分析中具有广泛应用,通过不同的参数和条件组合,可以灵活地满足各种统计需求。...AVG 函数SQL 中用于计算数值平均值的重要聚合函数。通过对指定列应用 AVG 函数,可以轻松获取数据列的平均值,对于统计和分析数值型数据非常有用。...聚合函数计算的结果列别名可用于提高结果的可读性。 GROUP BY 子句是 SQL 中用于分组数据并应用聚合函数的关键元素。...3.2 聚合函数GROUP BY 结合使用SQL 中,聚合函数GROUP BY 子句结合使用,用于对数据进行分组并对每个分组应用聚合函数,从而得到按组计算的结果。...聚合函数GROUP BY 结合使用SQL 中强大的数据分析工具,通过分组和计算,可以从大量数据中提取出有价值的统计信息,适用于各种数据分析和报告生成场景。

36210

【数据库设计和SQL基础语法】--查询数据--聚合函数

COUNT 函数SQL 中常用的聚合函数之一,用于快速计算行数。在数据统计和分析中具有广泛应用,通过不同的参数和条件组合,可以灵活地满足各种统计需求。...AVG 函数SQL 中用于计算数值平均值的重要聚合函数。通过对指定列应用 AVG 函数,可以轻松获取数据列的平均值,对于统计和分析数值型数据非常有用。...聚合函数计算的结果列别名可用于提高结果的可读性。 GROUP BY 子句是 SQL 中用于分组数据并应用聚合函数的关键元素。...3.2 聚合函数GROUP BY 结合使用SQL 中,聚合函数GROUP BY 子句结合使用,用于对数据进行分组并对每个分组应用聚合函数,从而得到按组计算的结果。...聚合函数GROUP BY 结合使用SQL 中强大的数据分析工具,通过分组和计算,可以从大量数据中提取出有价值的统计信息,适用于各种数据分析和报告生成场景。

37810

SQL 聚合查询

另外聚合本身也有一定逻辑复杂度,而 SQL 提供了聚合函数与分组聚合能力,可以方便快速的统计出有业务价值的聚合数据,这奠定了 SQL 语言的分析价值,因此大部分分析软件直接采用 SQL 作为直接面向用户的表达式...多字段分组聚合 GROUP BY 可以对多个维度使用,含义等价于表格查询时行/列拖入多个维度。 上面是 BI 查询工具视角,如果没有上下文,可以看下面这个递进描述: 按照多个字段进行分组聚合。...WHERE industry = 'internet' 然而,忽略这个差异会导致我们在聚合筛选时碰壁。...WHERE AVG(score) > 60 不要幻想上面的 SQL 可以执行成功,不要在 WHERE 里使用聚合函数。...因此可以在 HAVING 使用聚合函数: SELECT SUM(score) FROM amazing_table GROUP BY class_name HAVING AVG(score) > 60

2.4K31

数据分析面试必考—SQL快速入门宝典

毫不夸张地说,它是数据分析必会技能Top1,因为没有哪个初级数据分析师的面试能跨过SQL技能考核这一项的。...就像讲EXCEL的文章一定要讲数据透视表一样,数据的基本统计数据(例如统计学的五数)是分析师最先关注也是最容易获取的有价值的数据。学习SQL聚合函数,我们可以通过对比EXCEL的数据透视表来学习。...因为ZZ看来SQL聚合函数 EXCEL的数据透视表。 ? 那么使用聚合函数需要注意三要素:聚合函数+group by关键字+having关键字。...总的来说,使用聚合函数的三要素是聚合函数+group by关键字+having关键字。 这里聚合函数是必须存在的。...因为这会导致一对多,SQL逻辑混乱的情况;我们应用上面说的万能框架+聚合三要素给出一段聚合函数使用案例: 需求:使用聚合函数实现提取在XX学校XX年纪XX班同学中,语数外三门成绩最小值大于等于60分所有同学姓名

4.5K10

【Java 进阶篇】深入理解 SQL 聚合函数

无论您是数据库开发者、数据分析师还是希望更好地了解 SQL 数据库的用户,了解聚合函数都是非常重要的。...使用 GROUP BY 子句进行分组 在许多情况下,我们希望对数据进行分组并在每个分组上执行聚合函数,以便更细致地分析数据。这时就需要使用 GROUP BY 子句。...SQL 聚合函数的高级用法 除了上述基本用法外,SQL 聚合函数还有一些高级用法,可以帮助我们更好地分析和摘要数据。...SQL 允许嵌套聚合函数,以进行更复杂的计算。 使用 DISTINCT 关键字可以确保只考虑唯一的值进行聚合计算。 聚合函数可用于计算百分比、比例和进行数据透视,有助于更深入地分析数据。...无论您是数据库开发人员、数据分析师还是普通用户,了解如何使用聚合函数都将提高您在 SQL 数据库中工作的效率和能力。希望本文对您深入学习 SQL 聚合函数提供了有用的指导和信息。

26540
领券