您的位置:首页 > 数据库

SQL之三

2017-01-12 11:38 197 查看
SQL之三


注:有些sql语句在不同的DBMS中不能执行。

1. 日期和时间处理函数

日期和时间采用相应的数据类型存储在表中,每种DBMS都有自己的特殊形式。日期和时间以特殊的格式存储,以便能快速和有效地排序或过滤,并且节省物理存储空间。

举例1:

Orders表中包含的订单都带有订单日期。

为在SQL Server中检索2012年的所有订单。

Select order_num from Orders where datepart(yy,order_date) = 2012;

在Access中使用如下sql语句:

Select order_num from Orders where datepart(‘yyyy’,order_date) = 2012;

Oracle没有datepart()函数,不过有几个可用来完成相同检索的日期处理函数:

Select order_num from Orders where to_number(to_char(order_date,’yyyy’)) = 2016;

举一反三:

Select order_num from Orders where to_number(to_char(order_date,’mm’)) = 1;

这里查询的是所有1月份的

Select order_num from Orders where to_number(to_char(order_date,’dd’)) = 2;

这里查询的是所有2号的

举例2:

Orders表中2012年一月一号至2012年十二月三十一号的订单

Select order_num from where order_date between to_date(’01-01-2012’) and to_date(’12-31-2012’);

2. 数值处理函数

abs() 返回一个数的绝对值(绝对值:正数的绝对值就是它本身,负数的绝对值是-负数,0的绝对值就是0)

cos() 返回一个角度的余弦

exp() 返回一个数的指数值

p() 返回圆周率

sin() 返回一个角度的正弦

sqrt() 返回一个书的平方根

tan() 返回一个角度的正切

3. 汇总数据

聚集函数:

Avg() 返回某列的平均值

Count() 返回某列的函数

Max() 返回某列的最大值

Min() 返回某列的最小值

Sum() 返回某列值之和

下面是SQL语句的例子:

所有产品的平均价格

Select avg(prod_price) as avg_price from Products;

查询特定供应商所提供产品的平均价格:

Select avg(prod_price) as avg_price from Products where vend_id=’DLL01’;

注:avg()只用于单个列,avg()只能用来确定特定数值列的平均值,而且列名必须作为函数给出。为了获得多个列的平均值,必须使用多个avg()函数;avg()函数忽略列值为null的行。

返回Customers表中顾客的总数:

Select count(*) as num_cust from Customers;

注:如果count()函数指定的是某列,那么会忽略指定列为空的行,但如果用的是count(*),则不会忽略。

返回价格最多的订单

Select max(prod_price) as max_price from Products;

注:max()会忽略列值为null的值。

返回价格最少的订单

Select min(prod_price) as min_price from Products;

返回指定物品的数量之和

Select sum(quantity) as items_ordered from OrderItems where order_num = 20005;

返回总的订单的金额

Select sum(item_price * quantity) as total_price from OrderItems;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sql