SQL中的Function总结:
SQL拥有很多可用于计数和计算的内建函数。
在 SQL 中,基本的函数类型和种类有若干种。函数的基本类型是:
1. Aggregate 函数:合计函数(Aggregate functions)Aggregate 函数的操作面向一系列的值,并返回一个单一的值。
2. Scalar 函数
Scalar 函数的操作面向某个单一的值,并返回基于输入值的一个单一的值。
一、SQL中的AVG 函数
定义:AVG 函数返回数值列的平均值。NULL 值不包括在计算中。
AVG语法:
1. AVG(column_name)语法 :
SELECT AVG(column_name) FROM table_name
举例说明:
例子 1:计算 Orders表中"OrderPrice" 字段的平均值。
SELECT AVG(OrderPrice) AS OrderAverage FROM Orders;
结果:
例子 2:找到 Orders表中OrderPrice 值高于 OrderPrice 平均值的客户。
SELECT Customer from Orders where OrderPrice >(SELECT AVG(OrderPrice) FROM Orders);
结果:
二、SQL中的COUNT 函数
定义:COUNT() 函数返回匹配指定条件的行数。
COUNT语法:
1. COUNT(column_name)语法(COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入)):
SELECT COUNT(column_name) FROM table_name
2. COUNT(*) 语法(COUNT(*) 函数返回表中的记录数):
SELECT COUNT(*) FROM table_name
3. COUNT(DISTINCT column_name) 语法(COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目):
SELECT COUNT(DISTINCT column_name) FROM table_name
注释:COUNT(DISTINCT) 适用于 MYSQL、ORACLE 和 MSSQL,但是无法用于 Microsoft Access。
举例说明:
例子 1:计算Orders表中客户 "Carter" 的订单数
SELECT COUNT(Customer) AS CustomerNilsen FROM Orders WHERE Customer='Carter';
结果:
例子 2:计算Orders表中所有订单数,
SELECT COUNT(*) AS NumberOfOrders FROM Orders;
结果:
例子 3:计算Orders表中客户数,
SELECT COUNT(DISTINCT Customer) AS NumberOfCustomers FROM Orders;
结果:
三、SQL中的FIRST函数
定义:FIRST() 函数返回指定的字段中第一个记录的值。
提示:可使用 ORDER BY 语句对记录进行排序。
注:在MSSQL中是用select top 1 * from table_name来获取第一条记录的。
在MySQL中是用select * from table_name limit 0, 1,来获取第一条记录的。
FIRST语法:
1. FIRST(column_name)语法 :
SELECT FIRST(column_name) FROM table_name
举例说明:
例子 1:查找Orders表中 "OrderPrice" 列的第一个值。
SELECT FIRST(OrderPrice) AS FirstOrderPrice FROM Orders;
因为我用的是Mysql,所以这里用Mysql的写法来实现上述sql效果:
SELECT OrderPrice AS FirstOrderPrice FROM Orders limit 0, 1;
结果:
四、SQL中的LAST函数
定义:LAST() 函数返回指定的字段中最后一个记录的值。
提示:可使用 ORDER BY 语句对记录进行排序。
注:在MSSQL中不支持LAST函数,但是可以根据某一列进行排序,将最后一个记录排到第一个,然后通过top 1来获取排序后的第一个记录。
在MySQL中也不支持LAST函数,但也可以先排序,然后用limit 0,1 的方法来获取第一个记录。
LAST语法:
1. LAST(column_name)语法 :
SELECT LAST(column_name) FROM table_name
举例说明:
例子 1:查找Orders表中 "OrderPrice" 列的最后一个值。
SELECT LAST(OrderPrice) AS FirstOrderPrice FROM Orders;
因为我用的是Mysql,所以这里用Mysql的写法来实现上述sql效果:
SELECT OrderPrice AS FirstOrderPrice FROM Orders order by O_id desc limit 0, 1 ;
结果:
五、SQL中的MAX函数
定义:MAX 函数返回一列中的最大值。NULL 值不包括在计算中。
MAX语法:
1. MAX(column_name)语法 :
SELECT MAX(column_name) FROM table_name
举例说明:
例子 1:查找Orders表中 "OrderPrice" 列的最大值。
SELECT MAX(OrderPrice) AS LargestOrderPrice FROM Orders;
结果:
六、SQL中的MIN函数
定义:MIN 函数返回一列中的最小值。NULL 值不包括在计算中。
MIN语法:
1. MIN(column_name)语法 :
SELECT MIN(column_name) FROM table_name
举例说明:
例子 1:查找Orders表中 "OrderPrice" 列的最小值。
SELECT MIN(OrderPrice) AS SmallestOrderPrice FROM Orders;
结果:
七、SQL中的Sum函数
定义:SUM 函数返回数值列的总数(总额)。
SUM语法:
1. SUM(column_name)语法 :
SELECT SUM(column_name) FROM table_name
举例说明:
例子 1:查找Orders表中"OrderPrice" 字段的总数。
SELECT SUM(OrderPrice) AS OrderTotal FROM Orders;
结果:
下面是例子中涉及到表的建表语句和数据:
create table Orders(
O_Id int,
OrderDate date,
OrderPrice float,
Customer varchar(10)
);
insert into Orders values(1,'2008/12/29',1000,'Bush');
insert into Orders values(2,'2008/11/23',1600,'Carter');
insert into Orders values(3,'2008/10/05',700,'Bush');
insert into Orders values(4,'2008/09/28',300,'Bush');
insert into Orders values(5,'2008/08/06',2000,'Adams');
insert into Orders values(6,'2008/07/21',100,'Carter');