首页 > 代码库 > SQL 高级(9) 函数

SQL 高级(9) 函数

SQL 高级(9) 函数

函数的语法

        内建 SQL 函数的语法是:
SELECT function(列) FROM 表
函数的类型
        在 SQL 中,基本的函数类型和种类有若干种。函数的基本类型是:
  • Aggregate 函数 
  • Scalar 函数 
合计函数(Aggregate functions)
        Aggregate 函数的操作面向一系列的值,并返回一个单一的值。
        注释:如果在 SELECT 语句的项目列表中的众多其它表达式中使用 SELECT 语句,则这个 SELECT 必须使用 GROUP BY 语句!
        "Persons" table (在大部分的例子中使用过)
NameAge
Adams, John38
Bush, George33
Carter, Thomas28
        在 SQL Server 中的合计函数
函数描述
AVG(column)返回某列的行数
BINARY_CHECKSUM 
CHECKSUM 
CHECKSUM_AGG 
COUNT(column)返回某列的行数(不包括NULL值)
COUNT(*)返回被选行数
COUNT(DISTINCT column)返回相异结果的数目
FIRST(column)返回在指定的域中第一个记录的值(SQLServer2000 不支持)
LAST(column)返回在指定的域中最后一个记录的值(SQLServer2000 不支持)
MAX(column)返回某列的最高值
MIN(column)返回某列的最低值
STDEV(column) 
STDEVP(column) 
SUM(column)返回某列的总和
VAR(column) 
VARP(column) 
Scalar 函数
        Scalar 函数的操作面向某个单一的值,并返回基于输入值的一个单一的值。

SQL AVG 函数

定义和用法
        AVG 函数返回数值列的平均值。NULL 值不包括在计算中。
SQL AVG() 语法
SELECT AVG(column_name) FROM table_name
SQL AVG() 实例
        我们拥有下面这个 "Orders" 表:
O_IdOrderDateOrderPriceCustomer
12008/12/291000Bush
22008/11/231600Carter
32008/10/05700Bush
42008/09/28300Bush
52008/08/062000Adams
62008/07/21100Carter
        现在,我们希望计算 "OrderPrice" 字段的平均值。
        我们使用如下 SQL 语句:
SELECT AVG(OrderPrice) AS OrderAverage FROM Orders
        结果集类似这样:
OrderAverage
950
        现在,我们希望找到 OrderPrice 值高于 OrderPrice 平均值的客户。
SELECT Customer FROM Orders
WHERE OrderPrice>(SELECT AVG(OrderPrice) FROM Orders)
        结果集类似这样:
Customer
Bush
Carter
Adams

SQL COUNT() 语法

SQL COUNT(column_name) 语法
        COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入):
SELECT COUNT(column_name) FROM table_name
SQL COUNT(*)语法
        COUNT(*) 函数返回表中的记录数:
SELECT COUNT(*) FROM table_name
SQL COUNT(DISTINCT column_name) 语法
        COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目:
SELECT COUNT(DISTINCT column_name) FROM table_name
        注释:COUNT(DISTINCT) 适用于 ORACLE 和 Microsoft SQL Server,但是无法用于 Microsoft Access。
SQL COUNT(column_name) 实例
        我们拥有下列 "Orders" 表:
O_IdOrderDateOrderPriceCustomer
12008/12/291000Bush
22008/11/231600Carter
32008/10/05700Bush
42008/09/28300Bush
52008/08/062000Adams
62008/07/21100Carter
        现在,我们希望计算客户 "Carter" 的订单数。 
SELECT COUNT(Customer) AS CustomerNilsen FROM Orders
WHERE Customer='Carter'
        以上 SQL 语句的结果是 2,因为客户 Carter 共有 2 个订单: 
CustomerNilsen
2
SQL COUNT(*) 实例 
        如果我们省略 WHERE 子句,比如这样: 
SELECT COUNT(*) AS NumberOfOrders FROM Orders
        结果集类似这样:
NumberOfOrders
6
SQL COUNT(DISTINCT column_name) 实例
        现在,我们希望计算 "Orders" 表中不同客户的数目。
SELECT COUNT(DISTINCT Customer) AS NumberOfCustomers FROM Orders
        结果集类似这样:
NumberOfCustomers
3

FIRST() 函数

        FIRST() 函数返回指定的字段中第一个记录的值。
        提示:可使用 ORDER BY 语句对记录进行排序。
SQL FIRST() 语法
SELECT FIRST(column_name) FROM table_name
SQL FIRST() 实例
        我们拥有下面这个 "Orders" 表:
O_IdOrderDateOrderPriceCustomer
12008/12/291000Bush
22008/11/231600Carter
32008/10/05700Bush
42008/09/28300Bush
52008/08/062000Adams
62008/07/21100Carter
        现在,我们希望查找 "OrderPrice" 列的第一个值。
SELECT FIRST(OrderPrice) AS FirstOrderPrice FROM Orders
        结果集类似这样:
FirstOrderPrice
1000

LAST() 函数

        LAST() 函数返回指定的字段中最后一个记录的值。
        提示:可使用 ORDER BY 语句对记录进行排序。
SQL LAST() 语法
SELECT LAST(column_name) FROM table_name
SQL LAST() 实例
        我们拥有下面这个 "Orders" 表:
O_IdOrderDateOrderPriceCustomer
12008/12/291000Bush
22008/11/231600Carter
32008/10/05700Bush
42008/09/28300Bush
52008/08/062000Adams
62008/07/21100Carter
        现在,我们希望查找 "OrderPrice" 列的最后一个值。
SELECT LAST(OrderPrice) AS LastOrderPrice FROM Orders
        结果集类似这样:
LastOrderPrice
100

MAX() 函数

        MAX 函数返回一列中的最大值。NULL 值不包括在计算中。
SQL MAX() 语法
SELECT MAX(column_name) FROM table_name
        注释:MIN 和 MAX 也可用于文本列,以获得按字母顺序排列的最高或最低值。
SQL MAX() 实例
        我们拥有下面这个 "Orders" 表:
O_IdOrderDateOrderPriceCustomer
12008/12/291000Bush
22008/11/231600Carter
32008/10/05700Bush
42008/09/28300Bush
52008/08/062000Adams
62008/07/21100Carter
        现在,我们希望查找 "OrderPrice" 列的最大值。
SELECT MAX(OrderPrice) AS LargestOrderPrice FROM Orders
        结果集类似这样:
LargestOrderPrice
2000

MIN() 函数

        MIN 函数返回一列中的最小值。NULL 值不包括在计算中。
SQL MIN() 语法
SELECT MIN(column_name) FROM table_name
        注释:MIN 和 MAX 也可用于文本列,以获得按字母顺序排列的最高或最低值。
SQL MIN() 实例
        我们拥有下面这个 "Orders" 表:
O_IdOrderDateOrderPriceCustomer
12008/12/291000Bush
22008/11/231600Carter
32008/10/05700Bush
42008/09/28300Bush
52008/08/062000Adams
62008/07/21100Carter
        现在,我们希望查找 "OrderPrice" 列的最小值。
SELECT MIN(OrderPrice) AS SmallestOrderPrice FROM Orders
        结果集类似这样:
SmallestOrderPrice
100

SUM() 函数

        SUM 函数返回数值列的总数(总额)。
SQL SUM() 语法
SELECT SUM(column_name) FROM table_name
SQL SUM() 实例
        我们拥有下面这个 "Orders" 表:
O_IdOrderDateOrderPriceCustomer
12008/12/291000Bush
22008/11/231600Carter
32008/10/05700Bush
42008/09/28300Bush
52008/08/062000Adams
62008/07/21100Carter
        现在,我们希望查找 "OrderPrice" 字段的总数。
SELECT SUM(OrderPrice) AS OrderTotal FROM Orders
        结果集类似这样:
OrderTotal
5700

SQL 高级(9) 函数