第九课
9.1 聚集函数(对某些行运行的函数,计算并返回一个值)
我们经常需要汇总数据而不用把它们实际检索出来,为此SQL提供了专门的函数。使用这些函数,SQL查询可用于检索数据,以便分析和报表生成。这种类型的检索例子有:
  • 确定表中行数(或者满足某个条件或包含某个特定值的行数);
  • 获得表中某些行的和;
  • 找出表列(或所有行或某些特定的行)的最大值、最小值、平均值。
上述例子都需要汇总表中的数据,而不需要实际数据本身。因此,返回实际表数据纯属浪费时间和处理资源
为方便这种类型的检索,SQL给出了5个聚集函数:
函数                    说明
AVG()          返回某列的平均值
COUNT()     返回某列的行数
MAX()         返回某列的最大值
MIN()          返回某列的最小值
SUM()         返回某列值之和
 
9.1.1 AVG()函数
AVG()可以用来返回所有列的平均值,也可以用来返回特定列或行的平均值
例子:使用AVG()返回Products表中所有产品的平均价格:
输入▼
SELECT AVG(prod_price) AS avg_price
FROM Products;
输出▼
avg_price
-------------
6.823333
分析▼
此SELECT语句返回值avg_price,它包含Products表中所有产品的平均价格。
 
AVG()也可以用来确定特定列或行的平均值。下面的例子返回特定供应商所提供产品的平均价格:
输入▼
SELECT AVG(prod_price) AS avg_price
FROM Products
WHERE vend_id = 'DLL01';
输出▼
avg_price
-----------
3.8650
分析▼
这条SELECT语句与前一条的不同之处在于,它包含了WHERE子句。此WHERE子句仅过滤出vend_id为DLL01的产品,因此avg_price中返回的值只是该供应商产品的平均值。
 
注意:AVG()只能用来确定特定数值列的平均值,而且列名必须作为函数参数给出。为了获得多个列的平均值,必须使用多个AVG()函数。而且对于null的列 AVG()是忽略的不参与做平均;
 
9.1.2 COUNT()函数
COUNT()函数进行计数。可利用COUNT()确定表中行的数目或符合特定条件的行的数目。
COUNT()函数有两种使用方式:
  • 使用COUNT(*)对表中行的数目进行计数,不管表列中包含的是空值(NULL)还是非空值。
  • 使用COUNT(column)对特定列中具有值的行进行计数,忽略NULL值。
 
下面的例子返回Customers表中顾客的总数:
输入▼
SELECT COUNT(*) AS num_cust
FROM Customers;
输出▼
num_cust
--------
5
分析▼
在此例子中,利用COUNT(*)对所有行计数,不管行中各列有什么值。计数值在num_cust中返回。
 
下面的例子只对具有电子邮件地址的客户计数:
输入▼
SELECT COUNT(cust_email) AS num_cust
FROM Customers;
输出▼
num_cust
--------
3
分析▼
这条SELECT语句使用COUNT(cust_email)对cust_email列中有值的行进行计数。在此例子中,cust_email的计数为3(表示5个顾客中只有3个顾客有电子邮件地址)。
 
9.1.3 MAX()函数
MAX()返回指定列中的最大值。MAX()要求指定列名
提示:对非数值数据使用MAX()
虽然MAX()一般用来找出最大的数值或日期值,但许多(并非所有)DBMS允许将它用来返回任意列中的最大值,包括返回文本列中的最大值。在用于文本数据时,MAX()返回按该列排序后的最后一行。
 
9.1.4 MIN()函数
MIN()的功能正好与MAX()功能相反,它返回指定列的最小值。与MAX()一样,MIN()要求指定列名
提示:对非数值数据使用MIN()
虽然MIN()一般用来找出最小的数值或日期值,但许多(并非所有)DBMS允许将它用来返回任意列中的最小值,包括返回文本列中的最小值。在用于文本数据时,MIN()返回该列排序后最前面的行。
 
9.1.5 SUM()函数
SUM()用来返回指定列值的和(总计)。
下面举一个例子,OrderItems包含订单中实际的物品,每个物品有相应的数量。可如下检索所订购物品的总数(所有quantity值之和):
输入▼
SELECT SUM(quantity) AS items_ordered
FROM OrderItems
WHERE order_num = 20005;
输出▼
items_ordered
----------
200
分析▼
函数SUM(quantity)返回订单中所有物品数量之和,WHERE子句保证只统计某个物品订单中的物品。
 
SUM()也可以用来合计计算值。在下面的例子中,合计每项物品的item_price*quantity,得出总的订单金额:
输入▼
SELECT SUM(item_price*quantity) AS total_price
FROM OrderItems
WHERE order_num = 20005;
输出▼
total_price
----------
1648.0000
分析▼
函数SUM(item_price*quantity)返回订单中所有物品价钱之和,WHERE子句同样保证只统计某个物品订单中的物品。
 
9.2 聚集不同值
以上5个聚集函数都可以如下使用:
  • 对所有行执行计算,指定ALL参数或不指定参数(因为ALL是默认行为)。
  • 只包含不同的值,指定DISTINCT参数。
下面的例子使用AVG()函数返回特定供应商提供的产品的平均价格。它与上面的SELECT语句相同,但使用了DISTINCT参数,因此平均值只考虑各个不同的价格:
输入▼
SELECT AVG(DISTINCT prod_price) AS avg_price
FROM Products
WHERE vend_id = 'DLL01';
输出▼
avg_price
-----------
4.2400
警告:DISTINCT不能用于COUNT(*)
如果指定列名,则DISTINCT只能用于COUNT()。DISTINCT不能用于COUNT(*)。类似地,DISTINCT必须使用列名,不能用于计算或表达式。
 

SQL-基础学习4--聚集函数:AVG(),COUNT(),MAX(),MIN(),SUM();聚集不同值:DISTINCT的更多相关文章

  1. sql-函数avg,count,max,min,sum

     常用函数 AVG (平均) COUNT (计数) MAX (最大值) MIN (最小值) SUM (总合) 运用函数的语法是: SELECT "函数名"("栏位名&qu ...

  2. MySQL之汇总数据(AVG,COUNT,MAX,MIN,SUM)

    table test Field Type Null Key Default Extra id int(11) NO PRI NULL auto_increment name char(50) NO ...

  3. MySQL之聚合数据(AVG,COUNT,MAX,MIN,SUM)

    1.首先我们需要了解下什么是聚合函数 聚合函数aggregation function又称为组函数. 认情况下 聚合函数会对当前所在表当做一个组进行统计. 2.聚合函数的特点 1.每个组函数接收一个参 ...

  4. SQL基础学习篇--字符函数

    字符函数可与SELECT,UPDATE,DELETE RIGHT()----从右侧开始选择  SELECT RIGHT(列,字符数量) FROM 表 LEFT()----从左侧开始选择  SUBSTR ...

  5. mysql之count,max,min,sum,avg,celing,floor

    写在前面 昨天去青龙峡玩了一天,累的跟狗似的.不过还好,最终也算登到山顶了,也算来北京后征服的第三座山了.这里也唠叨一句,做开发这行,没事还是多运动运动,对自己还是很有好处的,废话少说,还是折腾折腾s ...

  6. Linq查询操作之聚合操作(count,max,min,sum,average,aggregate,longcount)

    在Linq中有一些这样的操作,根据集合计算某一单一值,比如集合的最大值,最小值,平均值等等.Linq中包含7种操作,这7种操作被称作聚合操作. 1.Count操作,计算序列中元素的个数,或者计算满足一 ...

  7. SQL 基础学习(2) Joining 和function , 作业没有做,需要看百宝箱。NOsql的概念

    SQL 基础学习(2) Joining 可以同时关联(joining)多张表进行复杂的查询. 相比于用Rails捞出数据再用Ruby进行过滤组合,使用SQL更加高效,节能. 以下是 users has ...

  8. SQL--合计函数(Aggregate functions):avg,count,first,last,max,min,sum

    SQL--合计函数(Aggregate functions):avg,count,first,last,max,min,sum avg() 函数 定义和用法 AVG 函数返回数值列的平均值.NULL ...

  9. Oracle SQL 基础学习

    oracel sql 基础学习 CREATE TABLE USERINFO ( ID ,) PRIMARY KEY, USERNAME ), USERPWD ), EMAIL ), REDATE DA ...

随机推荐

  1. android基础知识杂记

    Activity中获取视图组件对象:public View findViewById(@IdRes int id) 该方法以组件的资源ID为参数,返回一个视图对象View,需要强转成具体的视图类对象. ...

  2. 二叉树遍历(Java实现)

    二叉树遍历(Java实现)   主要是二叉树的遍历,包括递归遍历和非递归遍历 import java.util.ArrayDeque; import java.util.ArrayList; impo ...

  3. Android TV 开发(2)

    本文来自网易云社区 作者:孙有军 首先来看看拨号界面的配置代码: <LinearLayout xmlns:android="http://schemas.android.com/apk ...

  4. 1、IOS学习计划

    2015年12月10日 -- 2015年12月27日(一共3个周末,12个个工作日) 1.斯坦福公开课(IOS7应用开发) 一共18节课程,通过视频和demo建立感觉 2.千峰的OC课程 一共25节课 ...

  5. 【Minimum Path Sum】cpp

    题目: Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right w ...

  6. 【Best Time to Buy and Sell Stock II】cpp

    题目: Say you have an array for which the ith element is the price of a given stock on day i. Design a ...

  7. IOS开发学习笔记013-内存管理

    内存管理 1.基本知识 2.关闭ARC机制 3.@property 4.循环引用 5.自动释放池 6.内存管理总结 一.基本知识 内存的分类 栈:局部变量 堆:动态申请的对象,变量等 全局(静态):s ...

  8. 如何将Linux rm命令删除的文件放入垃圾箱

    因为rm命令删除的文件是不会放入垃圾箱的,所以无法恢复,下面小编就给大家介绍一种方法,通过替换Linux rm命令的方法,从而将rm命令删除的文件放入垃圾箱. 方法: 1. 在/home/userna ...

  9. Android ListView用法

    写了一个简单的示例来说明ListView的用法:给定一个单词,下面有四个含义,找出正确的一个,无论是否成功,则会跳转到下一个单词:主要用到的知识有: findViewById().  ListView ...

  10. Oracle 学习----:创建表(主键自增)

    一.创建表 create table testTable ( Id numbere, name varchar2(100), age number, createTime date, primary ...