第6章 分组函数1
- 格式:pdf
- 大小:67.95 KB
- 文档页数:21
☐分组函数对表中的多行进行操作,而每组返回一个计算结果。
常用的分组函数包括✓AVG,其语法格式为AVG( [ DISTINCT|ALL ] expr ),计算某列中某种分组后,每组的平均值,计算时会忽略空值(null),用于计算数字类型。
✓SUM,其语法格式为SUM( [ DISTINCT|ALL ] expr),计算某列中某种分组后,每组的和,用于计算数字类型。
✓MAX:计算最大值✓MIN:计算最小值✓COUNT :行计数☐AVG和SUM函数☐使用AVG函数和SUM函数。
✓SQL> SELECT AVG(sal) “平均工资",SUM(sal) "总工资"FROM emp;☐MAX和MIN函数✓MAX和MIN函数即可以操作数字型数据也可以操作字符型和日期型数据。
✓示例1SQL> SELECT MAX(SAL) "Highest salary", MIN(SAL) "Lowest salary"FROM emp;✓计算最早雇佣员工的日期和最晚雇佣员工的日期。
SQL> SELECT MAX(HIREDATE) "Last day", MIN(HIREDATE) "First day"FROM EMP;☐COUNT函数该函数返回经计算得到的返回的行数,包括空行和重复的行。
✓使用COUNT()函数。
SQL> SELECT count(*) "表中的行数"FROM emp;✓使用包含DISTINCT的COUNT函数。
SQL> SELECT count(distinct job)FROM emp;☐GROUP BY 子句使用AVG和SUM函数查询了表emp中的员工平均工资和总工资数,但是如果要查询每个工作职位的员工平均工资和总工资之和又该如何计算呢。
excel 随机分组函数摘要:1.介绍Excel 随机分组函数2.随机分组函数的语法和参数3.随机分组函数的使用方法和示例4.总结随机分组函数的作用和应用场景正文:Excel 随机分组函数是一种在Excel 中实现随机分组的函数,可以帮助用户实现对数据进行随机分组,从而实现更加公平的分组。
在Excel 中,随机分组函数主要包括“RAND()”和“RANDBETWEEN()”函数。
1.介绍Excel 随机分组函数Excel 随机分组函数是一种在Excel 中实现随机分组的函数,可以帮助用户实现对数据进行随机分组,从而实现更加公平的分组。
在Excel 中,随机分组函数主要包括“RAND()”和“RANDBETWEEN()”函数。
2.随机分组函数的语法和参数- RAND() 函数:语法:`=RAND()`参数:无返回值:返回一个大于等于0 且小于1 的随机数。
- RANDBETWEEN() 函数:语法:`=RANDBETWEEN(bottom, top)`参数:- bottom:必需参数,指定随机数的最小值(包括)。
- top:必需参数,指定随机数的最大值(不包括)。
返回值:返回一个指定范围内的随机整数。
3.随机分组函数的使用方法和示例- 使用RAND() 函数:示例:`=RAND()`,返回一个大于等于0 且小于1 的随机数。
- 使用RANDBETWEEN() 函数:示例:`=RANDBETWEEN(1, 10)`,返回一个介于1 和10 之间的随机整数。
4.总结随机分组函数的作用和应用场景随机分组函数在Excel 中有着广泛的应用,尤其是在需要实现随机分组的情况下。
例如,在进行抽奖活动时,可以使用随机分组函数来实现随机抽奖;在进行问卷调查时,可以使用随机分组函数来实现随机抽样。
分组函数python分组函数是在数据分析和数据处理中经常使用的一种工具,它可以帮助我们对数据进行分组,并对每个组进行相应的计算或统计操作。
在Python中,有多种方式可以实现分组函数的功能,如使用pandas库中的groupby方法、使用collections库中的defaultdict 类等。
一、使用pandas库的groupby方法进行分组在数据分析中,pandas库是一个非常常用的工具,它提供了一系列的数据结构和函数,方便我们对数据进行处理和分析。
其中,groupby方法可以帮助我们实现数据的分组操作。
我们需要导入pandas库,并读取数据集。
假设我们有一个销售数据集,其中包含了产品名称、销售数量和销售额等信息。
我们想要按照产品名称对数据进行分组,并计算每个产品的总销售数量和总销售额。
```import pandas as pd# 读取数据集data = pd.read_csv('sales.csv')# 按照产品名称进行分组,并计算总销售数量和总销售额grouped = data.groupby('产品名称').agg({'销售数量': 'sum', '销售额':'sum'})# 打印结果print(grouped)```通过以上代码,我们可以得到按照产品名称分组后的结果,其中包含了每个产品的总销售数量和总销售额。
二、使用collections库的defaultdict类进行分组除了使用pandas库的groupby方法,我们还可以使用collections 库中的defaultdict类来实现分组函数的功能。
defaultdict类是一个字典的子类,它可以在初始化时指定一个默认值,当访问字典中不存在的键时,会返回默认值而不是抛出KeyError异常。
假设我们有一个学生成绩的数据集,其中包含了学生的姓名和成绩等信息。
python 的分组函数Python的分组函数是指在Python编程语言中,用于将数据集合按照特定的规则进行分组的函数。
分组函数在数据处理和分析中起着非常重要的作用,可以帮助我们更加高效地处理和分析大量的数据。
一、groupby函数groupby函数是Python中最常用的分组函数之一,它可以根据指定的键对数据进行分组。
在使用groupby函数之前,首先需要导入itertools模块。
1. 函数原型:itertools.groupby(iterable, key=None)2. 参数解释:iterable:可迭代对象,表示要进行分组的数据集合。
key:可选参数,表示用于分组的键,可以是一个函数或者是一个属性名。
3. 返回值:返回一个迭代器,每个元素都是一个包含分组键和分组对象的元组。
4. 示例代码:```import itertoolsdata = [1, 1, 2, 2, 3, 3, 4, 5, 5]groups = itertools.groupby(data)for key, group in groups:print(key, list(group))```以上代码将输出:```1 [1, 1]2 [2, 2]3 [3, 3]4 [4]5 [5, 5]```二、pandas的groupby函数pandas是Python中用于数据分析的重要库,它提供了更高级的分组函数,可以方便地对数据进行分组和聚合操作。
1. 函数原型:DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, **kwargs)2. 参数解释:by:用于分组的列名、函数或者多列名的列表。
axis:指定按照哪个轴进行分组,默认为0表示按照行进行分组。
level:指定分组的层级。
第一节求和与求平均一、什么是组函数组函数就是我们前面我说过的多行函数。
它主要针对表进行操作。
因为只有表中,才有多行数据。
下面我们以SUM和A VG这两个组函数为例,先从它们开始,介绍组函数的特性。
二、SUM 求和函数在我们的第一节内容中,我简单已经过SUM的使用。
下面我们再详细介绍一下SUM函数的使用。
我们任以上一节内容中所建立的表为例。
在YDSP(已定商品)表中,记录有所有已销售商品的信息,我显示一下:sid=38 pid=17> select spbh,jg from ydsp;SPBH JG------------- ----------101 14500101 14500101 14500202 9800102 6000201 9800已选择6行。
我显示了SPBH(商品编号)和每样商品的价格(JG),我现在想统计一下所有已销售商品的总额。
也就是对JG列求一下合了。
命令如下:sid=38 pid=17> select sum(jg) from ydsp;SUM(JG)-------------------69100结果是69100,它计算的这个结果,到底是不是JG列所有行数据的行呢?我们如下操作来验证一下:sid=38 pid=17> select 14500+14500+14500+9800+6000+9800 from dual;14500+14500+14500+9800+6000+9800-------------------------------------------------69100我手动的把JG列中的六行数据加到了一起,结果的确是69100。
ORACLE在执行SUM()函数时,会从JG 列取出每一行,把结果累加到一起。
我们在讲单行函数和多行函数时就说过,对于单行函数,将列中每一行数据看作一个个体,单行函数分别对每个个体进行计算。
而多行函数则把列中所有行数据看作一个整体,多行函数对这个整体中的所有元素,统一的做求和、求平均、统计最大或最小值等运算,无论此整体中包含多少行,最终返回的结果只有一个。
详解Python中的分组函数groupby和itertools)具体代码如下所⽰:from operator import itemgetter #itemgetter⽤来去dict中的key,省去了使⽤lambda函数from itertools import groupby #itertool还包含有其他很多函数,⽐如将多个list联合起来。
d1={'name':'zhangsan','age':20,'country':'China'}d2={'name':'wangwu','age':19,'country':'USA'}d3={'name':'lisi','age':22,'country':'JP'}d4={'name':'zhaoliu','age':22,'country':'USA'}d5={'name':'pengqi','age':22,'country':'USA'}d6={'name':'lijiu','age':22,'country':'China'}lst=[d1,d2,d3,d4,d5,d6]#通过country进⾏分组:lst.sort(key=itemgetter('country')) #需要先排序,然后才能groupby。
lst排序后⾃⾝被改变lstg = groupby(lst,itemgetter('country'))#lstg = groupby(lst,key=lambda x:x['country']) 等同于使⽤itemgetter()for key,group in lstg:for g in group: #group是⼀个迭代器,包含了所有的分组列表print key,g返回:China {'country': 'China', 'age': 20, 'name': 'zhangsan'}China {'country': 'China', 'age': 22, 'name': 'lijiu'}JP {'country': 'JP', 'age': 22, 'name': 'lisi'}USA {'country': 'USA', 'age': 19, 'name': 'wangwu'}USA {'country': 'USA', 'age': 22, 'name': 'zhaoliu'}USA {'country': 'USA', 'age': 22, 'name': 'pengqi'}print [key for key,group in lstg] #返回:['China', 'JP', 'USA']print [(key,list(group)) for key,group in lstg]#返回的list中包含着三个元组:[('China', [{'country': 'China', 'age': 20, 'name': 'zhangsan'}, {'country': 'China', 'age': 22, 'name': 'lijiu'}]), ('JP', [{'country': 'JP', 'age': 22, 'name': 'lisi'}]), ('USA', [{'country': 'USA', 'age': 19, 'name': 'wangwu'}, {'country': 'USA', 'age': 22, 'name': 'zhaoliu'}, {'country': 'USA', 'a print dict([(key,list(group)) for key,group in lstg])#返回的是⼀个字典:{'JP': [{'country': 'JP', 'age': 22, 'name': 'lisi'}], 'China': [{'country': 'China', 'age': 20, 'name': 'zhangsan'}, {'country': 'China', 'age': 22, 'name': 'lijiu'}], 'USA': [{'country': 'USA', 'age': 19, 'name': 'wangwu'}, {'country': 'USA', 'age': 22, 'name': 'zhaoliu'}, {'country': 'USA', 'age' print dict([(key,len(list(group))) for key,group in lstg])#返回每个分组的个数:{'JP': 1, 'China': 2, 'USA': 3}#返回包含有2个以上元素的分组print [key for key,group in groupby(sorted(lst,key=itemgetter('country')),itemgetter('country')) if len(list(group))>=2]#返回:['China', 'USA']lstg = groupby(sorted(lst,key=itemgetter('country')),key=itemgetter('country'))lstgall=[(key,list(group)) for key,group in lstg ]print dict(filter(lambda x:len(x[1])>2,lstgall))#过滤出分组后的元素个数⼤于2个的分组,返回:{'USA': [{'country': 'USA', 'age': 19, 'name': 'wangwu'}, {'country': 'USA', 'age': 22, 'name': 'zhaoliu'}, {'country': 'USA', 'age': 22, 'name': 'pengqi'}]}⾃定义分组:from itertools import groupbylst=[2,8,11,25,43,6,9,29,51,66]def gb(num):if num <= 10:return 'less'elif num >=30:return 'great'else:return 'middle'print [(k,list(g))for k,g in groupby(sorted(lst),key=gb)]返回:[('less', [2, 6, 8, 9]), ('middle', [11, 25, 29]), ('great', [43, 51, 66])]总结以上所述是⼩编给⼤家介绍的Python中的分组函数groupby和itertools),希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。
分组函数groupby在使用groupby函数之前,我们首先需要了解一些必要的概念。
SQL中的分组可以理解为将具有相同特征的记录归在一起,以形成一个组。
在数据库表中,我们可以根据其中一列的值将数据分为多个不同的组,然后对每个组进行进一步的操作。
使用groupby函数的一般语法如下:SELECT列1,列2,...列n,聚合函数FROM表名GROUPBY列1,列2,...列n;在这个语法中,列1,列2,...列n是根据哪些列来进行分组的字段,聚合函数是对每个组进行计算或筛选的函数,表名是我们要操作的数据表。
groupby函数常用的聚合函数有以下几种:-COUNT:统计每个组中的记录数。
-SUM:计算每个组中一些列的和。
-AVG:计算每个组中一些列的平均值。
-MIN:取每个组中一些列的最小值。
-MAX:取每个组中一些列的最大值。
下面我们通过一个示例来解释groupby函数的用法。
假设有一个sales表,保存了销售数据的相关信息,包括销售员的编号、客户的编号、销售额和销售日期等字段。
现在我们需要统计每个销售员的销售总额和平均销售额。
首先,我们可以使用以下SQL语句进行分组计算:SELECT SalesmanID, SUM(SalesAmount) AS TotalSales,AVG(SalesAmount) AS AvgSalesFROM salesGROUP BY SalesmanID;在这个例子中,我们根据SalesmanID字段将数据分组。
然后使用SUM和AVG函数分别计算每个组中的销售总额和平均销售额。
最后,将结果显示为SalesmanID、TotalSales和AvgSales三个列。
当我们执行这个SQL语句时,将会得到一个包含每个销售员的销售总额和平均销售额的结果集。
groupby函数除了用于计算聚合值外,还可以用于筛选数据。
我们可以在groupby函数的后面添加having子句来进行筛选。
自定义分组函数自定义分组函数是一种自定义函数,它将数据集按照特定规则分组并返回结果。
常见的自定义分组函数示例包括将数据按照年龄、性别、地区等分类分组。
下面介绍两种常见的自定义分组函数:1. 基于关键字的分组函数:该函数将数据集按照关键字进行分组,并返回每组的数量。
pythondef group_by_keyword(data, keyword):groups = {}for item in data:if item[keyword] in groups:groups[item[keyword]] += 1else:groups[item[keyword]] = 1return groups2. 基于规则的分组函数:该函数将数据集按照特定规则进行分组,并返回每组的数量。
pythondef group_by_rule(data, rule):groups = {}for item in data:group_key = rule(item)if group_key in groups:groups[group_key] += 1else:groups[group_key] = 1return groups上述示例中,group_by_keyword函数将数据集按照指定的关键字进行分组,并返回每组的数量。
例如,我们可以使用该函数将用户数据集按照性别分组:pythondata = [{'name': 'Tom', 'gender': 'Male', 'age': 20},{'name': 'Jane', 'gender': 'Female', 'age': 30},{'name': 'Bob', 'gender': 'Male', 'age': 25},{'name': 'Alice', 'gender': 'Female', 'age': 22}]result = group_by_keyword(data, 'gender')print(result) # Output: {'Male': 2, 'Female': 2}而group_by_rule函数则可以根据特定规则进行分组。
excel 分组函数
Excel分组函数是一种非常强大的数据处理工具,它可以帮助用户快速对数据进行分类、汇总和统计。
在Excel中,分组函数主要有SUMIF、AVERAGEIF、COUNTIF、MIN、MAX等多种类型,每种函数都有其独特的应用场景和用法。
例如,如果要对某一列数据进行分组求和,可以使用SUMIF函数,该函数可以根据指定的条件对数据进行筛选和求和。
如果要对某一列数据进行分组求平均值,可以使用AVERAGEIF函数,该函数可以根据指定的条件对数据进行筛选和求平均值。
如果要对某一列数据进行分组统计个数,可以使用COUNTIF函数,该函数可以根据指定的条件对数据进行筛选和计数。
除了以上常见的分组函数外,还有一些其他的分组函数,例如MIN和MAX,它们可以帮助用户找出数据中的最小值和最大值。
在使用这些函数时,用户需要了解其参数的意义和用法,才能正确地使用这些函数对数据进行分组处理。
总之,Excel分组函数是一种非常实用的数据处理工具,它可以帮助用户快速、高效地对大量数据进行分类、汇总和统计,是Excel 数据分析中不可缺少的一部分。
- 1 -。
函数分组的使用方法
函数分组是一种将函数按照功能进行分组的方法,使得代码更加清晰易懂、易于维护。
以下是使用函数分组的一些方法:
1. 按照功能进行分组
将相同功能的函数放置在同一个函数组内。
例如,所有与用户登录相关的函数可以放在一个名为“用户登录”的函数组内。
2. 分组命名
对于不同的函数组,可以给它们命名以便于区分。
例如,与用户管理相关的函数组可以称为“用户管理”,与订单管理相关的函数组
可以称为“订单管理”。
3. 维护代码风格一致性
在分组时,应该遵循一定的代码风格,例如函数名的命名规范、注释的规范等等。
这样有助于提高代码的可读性和可维护性。
4. 提高代码的可重用性
通过将相关函数放在同一个函数组内,可以提高代码的可重用性。
例如,在开发一个新的功能时,可以直接使用之前已经编写过的函数组,而不必重新编写代码。
5. 优化代码结构
使用函数分组可以使代码结构更加清晰明了。
在需要修改某个功能时,可以更快地找到相关函数组,并且更容易修改。
总之,使用函数分组可以提高代码的可维护性、可读性和可重用性。
在编写代码时,应该根据功能进行分组,并遵循一定的代码风格。
python笔记-分组相关函数这篇笔记主要是关于pandas中三个函数groupby()、crosstab()、pivot_table(),平常做数据统计表时会经常使⽤。
⼀、groupby()1. 基本使⽤# 对⼀列进⾏分组df['data1'].groupby(df['key1’]).mean() # 结果是seriesdf[['data1','data2']].groupby(df['key1']).sum() # 结果是dataframedf.groupby('key1’)['data1'].mean() # 结果是series# 设置参数as_index=False,可避免分组键组成索引,如果结果列是单列,要写成df.groupby才能使⽤as_indexdf.groupby('key1',as_index = False)['data1'].sum() # 图2 结果是dataframe形式df.groupby('key1’)[['data1','data2']].mean() # 结果是dataframe形式# 默认所有数值列都要被聚合df.groupby('key1').mean()# 对两列进⾏分组,出来的结果,索引是具有层次化的两列means = df['data1'].groupby([df['key1'], df['key2']]).mean() #结果是seriesmeans.unstack() #把内层的索引抽出来成为列,结果是DataFrame# 多列分组多列结果df.groupby(['key1','key2'])[['data1','data2']].mean()# 返回分组⼤⼩df.groupby(['key1', 'key2']).size()# 聚合函数使⽤⾃定义函数df.groupby('key1').agg(lambda x: x.max()-x.min())--------------------------# ⾃定义分组key = list('ototo') # 要和⾏的数量⼀致df.groupby(key).mean()# 结果data1 data2o -0.211108 0.162019t -0.354277 -0.845506--------------------------# 使⽤describe()df.groupby('key1')['data1'].describe()count mean std min 25% 50% 75% \key1a 4.0 0.263429 0.948813 -0.786293 -0.160546 0.165381 0.589355b 4.0 0.464058 1.447415 -1.146518 -0.137997 0.318070 0.920126c 3.0 -0.444718 0.527141 -1.053396 -0.598537 -0.143678 -0.140379maxkey1a 1.509245b 2.366611c -0.137080# 转置df.groupby('key1')['data1'].describe().Tkey1 a b ccount 4.000000 4.000000 3.000000mean 0.263429 0.464058 -0.444718std 0.948813 1.447415 0.527141min -0.786293 -1.146518 -1.05339625% -0.160546 -0.137997 -0.59853750% 0.165381 0.318070 -0.14367875% 0.589355 0.920126 -0.140379max 1.509245 2.366611 -0.1370802. 分组使⽤不同聚合函数# 多列使⽤多个⼀样的聚合函数df.groupby(['key1'])[['data1','data2']].agg(['count', 'mean', 'max'])# 多列对应多个聚合函数,不同列对应不同的聚合函数df.groupby(['key1'])[['data1','data2']].agg({'data1':'sum','data2':'mean'})# 显⽰分组结果时,给聚合函数取别名ftuples = [('平均数', 'mean'),('总和', 'sum')] #注意是元组的形式df.groupby(['key1'])[['data1','data2']].agg(ftuples)3. 结合transform使⽤注意:使⽤transform返回的数据⼤⼩和原始的df⼤⼩⼀样(⾏列)df# 结果key1 key2 data1 data20 a one 0.112262 -0.9937481 a two -0.449957 -0.5803742 b one 0.560749 -0.2028743 b two -0.258597 -1.1106394 a one -1.306336 1.682677----------------df.groupby('key1').mean()# 结果data1 data2key1a -0.548010 0.036185b 0.151076 -0.656756----------------# groupby结合transform使⽤df.groupby('key1').transform(np.mean)# 结果和原始的df⾏数相同,并⽣成的是对应的组的均值data1 data20 -0.548010 0.0361851 -0.548010 0.0361852 0.151076 -0.6567563 0.151076 -0.6567564 -0.548010 0.036185# 和group合并,实现在原表基础上添加列存放所属组均值的列,也可以使⽤df和普通的groupby做merge实现pd.concat([df,meanData], axis = 1)#结果key1 key2 data1 data2 data1 data20 a one 0.112262 -0.993748 -0.548010 0.0361851 a two -0.449957 -0.580374 -0.548010 0.0361852 b one 0.560749 -0.202874 0.151076 -0.6567563 b two -0.258597 -1.110639 0.151076 -0.6567564 a one -1.306336 1.682677 -0.548010 0.0361854、结合apply使⽤将待处理对象拆分为多个对象-->对每⼀个对象应⽤函数-->最后合并数据每个组的⼤⼩,取决于apply中的函数返回,可以返回多值。
excel分组排序函数
Excel中的分组排序函数是一种非常有用的工具,它可以帮助用户快速地对数据进行分组并进行排序。
该函数通常用于大型数据集或需要按特定标准进行分类的数据
集中。
通过使用分组排序函数,用户可以轻松地将数据分组并按照特定的顺序进行排序。
这使得数据更容易理解和分析。
使用Excel的分组排序函数需要以下步骤:
1. 选择要排序的数据集。
2. 在Excel的“数据”选项卡中,选择“排序和筛选”。
3. 在弹出的菜单中,选择“高级”。
这将打开“高级排序”对话框。
4. 在“高级排序”对话框中,选择要分组的列,并选择要按照哪个标准进行排序。
5. 点击“确定”按钮,Excel将自动将数据分组并按照选择的顺序进行排序。
使用Excel的分组排序函数可以大大提高数据分析的效率。
无论是在工作中还是在日常生活中,这个函数都是一个非常有用的工具。
- 1 -。
Oracle之分组函数组函数:一、Oracle 服务器按下面的顺序求子句的值:1. 如果语句包含一个 WHERE 子句,服务器建立侯选行。
2. 服务器确定在 GROUP BY 子句中指定的组。
3. HAVING 子句进一步约束不满足在 HAVING 子句中分组标准的结果分组。
二、组函数的类型:AVG 平均值COUNT 计数MAX 最大值MIN 最小值STDDEV 标准差SUM 合计VARIANCE 方差1.所有组函数忽略空值。
为了用一个值代替空值,用 NVL、NVL2 或 COALESCE 函数。
2.DISTINCT 使得函数只考虑不重复的值;ALL 使得函数考虑每个值,包括重复值。
默认值是 ALL ,因此不需要指定。
3.用于函数的参数的数据类型可以是CHAR、VARCHAR2、NUMBER 或 DATE。
4.当使用 GROUP BY 子句时,Oracle 服务器隐式以升序排序结果集。
为了覆盖该默认顺序,DESC 可以被用于 ORDER BY 子句。
使用类型:可以使用MIN 和MAX 用于任何数据类型,AVG、SUM、VARIANCE 和STDDEV 函数只能被用于数字数据类型。
COUNT 函数COUNT 函数有三中格式:COUNT(*) 返回select语句的标准行,包括重复行,空值列的行COUNT(expr) 由 expr 指定的非空值的数。
COUNT(DISTINCT expr) 返回在列中的由expr 指定的唯一的非空值的数。
在组函数中使用NVL 函数:NVL 函数强制组函数包含空值Java代码1.SELECT AVG(NVL(commission_pct, 0))FROM employees;三、group by子句GROUP BY 子句把表中的行划分为组。
然后你可以用组函数返回每一组的摘要信息。
原则如果在SELECT 子句中包含了组函数,就不能选择单独的结果,除非单独的列出现在 GROUP BY 子句中。
3 Sept. 2008
©Neusoft Confidential
第六章分组函数
东软IT人才实训中心
Copyright 2008 By Neusoft Group. All rights reserved
3 Sept. 2008
Confidential
本章要点
•
分组函数基本概念•
SUM 、AVG 、MIN 、MAX 、COUNT 函数使用•
GROUP BY 子句•HAVING 子句
3 Sept. 2008
Confidential
分组函数概念
•
分组函数是对表中一组记录进行操作,每组只返回一个结果。
即首先要对表记录进行分组,然后再进行操作汇总,每组返回一个结果。
分组时可能是整个表分为一组,也可能根据条件分成多组。
•分组函数常用到以下的五个函数:–
MIN –
MAX –
SUM –
AVG –COUNT
3 Sept. 2008
Confidential
•总结SELECT 语句执行过程:
–通过FROM 子句中找到需要查询的表;–通过WHERE 子句进行非分组函数筛选判断;–通过GROUP BY 子句完成分组操作;–通过HAVING 子句完成组函数筛选判断;–通过SELECT 子句选择显示的列或表达式及组函数;–通过ORDER BY 子句进行排序操作。
3 Sept. 2008
Confidential 本章小结•
MIN 函数和MAX 函数•
SUM 函数和AVG 函数•
COUNT 函数•
组函数中DISTINCT 消除重复行•
组函数中空值处理•
通过GROUP BY 子句进行分组汇总•
GROUP BY 子句使用需要注意的两个问题•HAVING 子句的使用
3 Sept. 2008
Confidential 练习
• 1.查询部门平均工资在8000元以上的部门名称及平均工资。
•
2.查询员工工作编号中不是以“SA_”开头并且平均工资在8000元以上的工作编号及平均工资,并按平均工资降序排序。
• 3.查询部门人数在4人以上的部门的部门名称及最低工
资和最高工资。
• 4.查询工作不为SA_REP ,工资的和大于等于25000的工作编号和每种工作工资的和。
• 5.显示经理号码,这个经理所管理员工的最低工资,不包括经理号为空的,不包括最低工资小于3000的,按最低工资由高到低排序。