SQL 高级(9) 函数,sql函数
SQL 高级(9) 函数
函数的语法
内建 SQL 函数的语法是:SELECT function(列) FROM 表函数的类型 在 SQL 中,基本的函数类型和种类有若干种。函数的基本类型是:
- Aggregate 函数
- Scalar 函数
注释:如果在 SELECT 语句的项目列表中的众多其它表达式中使用 SELECT 语句,则这个 SELECT 必须使用 GROUP BY 语句!
"Persons" table (在大部分的例子中使用过)
| Name | Age |
|---|---|
| Adams, John | 38 |
| Bush, George | 33 |
| Carter, Thomas | 28 |
| 函数 | 描述 |
|---|---|
| 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 函数的操作面向某个单一的值,并返回基于输入值的一个单一的值。
SQL AVG 函数
定义和用法 AVG 函数返回数值列的平均值。NULL 值不包括在计算中。SQL AVG() 语法
SELECT AVG(column_name) FROM table_nameSQL AVG() 实例 我们拥有下面这个 "Orders" 表:
| O_Id | OrderDate | OrderPrice | Customer |
|---|---|---|---|
| 1 | 2008/12/29 | 1000 | Bush |
| 2 | 2008/11/23 | 1600 | Carter |
| 3 | 2008/10/05 | 700 | Bush |
| 4 | 2008/09/28 | 300 | Bush |
| 5 | 2008/08/06 | 2000 | Adams |
| 6 | 2008/07/21 | 100 | Carter |
我们使用如下 SQL 语句:
SELECT AVG(OrderPrice) AS OrderAverage FROM Orders结果集类似这样:
| OrderAverage |
|---|
| 950 |
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_nameSQL COUNT(*)语法
COUNT(*) 函数返回表中的记录数:
SELECT COUNT(*) FROM table_nameSQL 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_Id | OrderDate | OrderPrice | Customer |
|---|---|---|---|
| 1 | 2008/12/29 | 1000 | Bush |
| 2 | 2008/11/23 | 1600 | Carter |
| 3 | 2008/10/05 | 700 | Bush |
| 4 | 2008/09/28 | 300 | Bush |
| 5 | 2008/08/06 | 2000 | Adams |
| 6 | 2008/07/21 | 100 | Carter |
SELECT COUNT(Customer) AS CustomerNilsen FROM Orders WHERE Customer='Carter'以上 SQL 语句的结果是 2,因为客户 Carter 共有 2 个订单:
| CustomerNilsen |
|---|
| 2 |
如果我们省略 WHERE 子句,比如这样:
SELECT COUNT(*) AS NumberOfOrders FROM Orders结果集类似这样:
| NumberOfOrders |
|---|
| 6 |
现在,我们希望计算 "Orders" 表中不同客户的数目。
SELECT COUNT(DISTINCT Customer) AS NumberOfCustomers FROM Orders结果集类似这样:
| NumberOfCustomers |
|---|
| 3 |
FIRST() 函数
FIRST() 函数返回指定的字段中第一个记录的值。提示:可使用 ORDER BY 语句对记录进行排序。
SQL FIRST() 语法
SELECT FIRST(column_name) FROM table_nameSQL FIRST() 实例
我们拥有下面这个 "Orders" 表:
| O_Id | OrderDate | OrderPrice | Customer |
|---|---|---|---|
| 1 | 2008/12/29 | 1000 | Bush |
| 2 | 2008/11/23 | 1600 | Carter |
| 3 | 2008/10/05 | 700 | Bush |
| 4 | 2008/09/28 | 300 | Bush |
| 5 | 2008/08/06 | 2000 | Adams |
| 6 | 2008/07/21 | 100 | Carter |
SELECT FIRST(OrderPrice) AS FirstOrderPrice FROM Orders结果集类似这样:
| FirstOrderPrice |
|---|
| 1000 |
LAST() 函数
LAST() 函数返回指定的字段中最后一个记录的值。提示:可使用 ORDER BY 语句对记录进行排序。
SQL LAST() 语法
SELECT LAST(column_name) FROM table_nameSQL LAST() 实例
我们拥有下面这个 "Orders" 表:
| O_Id | OrderDate | OrderPrice | Customer |
|---|---|---|---|
| 1 | 2008/12/29 | 1000 | Bush |
| 2 | 2008/11/23 | 1600 | Carter |
| 3 | 2008/10/05 | 700 | Bush |
| 4 | 2008/09/28 | 300 | Bush |
| 5 | 2008/08/06 | 2000 | Adams |
| 6 | 2008/07/21 | 100 | Carter |
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_Id | OrderDate | OrderPrice | Customer |
|---|---|---|---|
| 1 | 2008/12/29 | 1000 | Bush |
| 2 | 2008/11/23 | 1600 | Carter |
| 3 | 2008/10/05 | 700 | Bush |
| 4 | 2008/09/28 | 300 | Bush |
| 5 | 2008/08/06 | 2000 | Adams |
| 6 | 2008/07/21 | 100 | Carter |
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_Id | OrderDate | OrderPrice | Customer |
|---|---|---|---|
| 1 | 2008/12/29 | 1000 | Bush |
| 2 | 2008/11/23 | 1600 | Carter |
| 3 | 2008/10/05 | 700 | Bush |
| 4 | 2008/09/28 | 300 | Bush |
| 5 | 2008/08/06 | 2000 | Adams |
| 6 | 2008/07/21 | 100 | Carter |
SELECT MIN(OrderPrice) AS SmallestOrderPrice FROM Orders结果集类似这样:
| SmallestOrderPrice |
|---|
| 100 |
SUM() 函数
SUM 函数返回数值列的总数(总额)。SQL SUM() 语法
SELECT SUM(column_name) FROM table_nameSQL SUM() 实例
我们拥有下面这个 "Orders" 表:
| O_Id | OrderDate | OrderPrice | Customer |
|---|---|---|---|
| 1 | 2008/12/29 | 1000 | Bush |
| 2 | 2008/11/23 | 1600 | Carter |
| 3 | 2008/10/05 | 700 | Bush |
| 4 | 2008/09/28 | 300 | Bush |
| 5 | 2008/08/06 | 2000 | Adams |
| 6 | 2008/07/21 | 100 | Carter |
SELECT SUM(OrderPrice) AS OrderTotal FROM Orders结果集类似这样:
| OrderTotal |
|---|
| 5700 |
这种题上网一搜索一大把,也用不着来这里问
给你发点
1.绝对值
SQL:select abs(-1) value
O:select abs(-1) value from dual
2.取整(大)
S:select ceiling(-1.001) value
O:select ceil(-1.001) value from dual
3.取整(小)
S:select floor(-1.001) value
O:select floor(-1.001) value from dual
4.取整(截取)
S:select cast(-1.002 as int) value
O:select trunc(-1.002) value from dual
5.四舍五入
S:select round(1.23456,4) value 1.23460
O:select round(1.23456,4) value from dual 1.2346
6.e为底的幂
S:select Exp(1) value 2.7182818284590451
O:select Exp(1) value from dual 2.71828182
7.取e为底的对数
S:select log(2.7182818284590451) value 1
O:select ln(2.7182818284590451) value from dual; 1
8.取10为底对数
S:select log10(10) value 1
O:select log(10,10) value from dual; 1
9.取平方
S:select SQUARE(4) value 16
O:select power(4,2) value from dual 16
10.取平方根
S:select SQRT(4) value 2
O:select SQRT(4) value from dual 2
11.求任意数为底的幂
S:select power(3,4) value 81
O:select power(3,4) value from dual 81
12.取随机数
S:select rand() value
O:select sys.dbms_random.value(0,1) value from dual;
13.取符号
S:select sign(-8) value -1
O:select sign(-8) value from dual -1
----------数学函数
14.圆周率
S:SELECT PI() value 3.1415926535897931
O:不知道
15.sin,cos,tan 参数都以弧度为单位
例如:select sin(PI()/2) value 得到1(SQLServer)
16.Asin,Acos,Atan,Atan2 返回弧度
17.弧度角度互换(SQLServer,Oracle不知道)
DEGREES:弧度-〉角度
RADIANS:角度-〉弧度
---------数值间比较
18. 求集合最大值
S:select max(value) value from
(select 1 value
union
select -2 value
union
select 4 value
union
select 3 value)a
O:sele......余下全文>>
1.isnull() 空记录操作
2.getdate() 获取当前时间
3.convert() 类型转换
4.dateadd() 日期增加
5.datediff() 日期差
6.substring() 取字符串
7.replace() 字符串替换
8.left(),right() 取左右子字符串
9.LTrim(),RTrim() 去字符串左右空格
10.STR(),int() 类型转换