SQL函数

1. AVG() 函数返回数值列的平均值。

下面的 SQL 语句选择访问量高于平均访问量的 "site_id" 和 "count":

例如: SELECT site_id, count FROM access_log WHERE count > (SELECT AVG(count) FROM access_log);

2. COUNT() 函数返回匹配指定条件的行数。

COUNT(*) 函数返回表中的记录数:

例如: SELECT COUNT(*) FROM table_name;

COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目:

例如: SELECT COUNT(DISTINCT column_name) FROM table_name;

说明: SELECT DISTINCT 语句用于返回唯一不同的值; 在表中,一个列可能会包含多个重复值,有时您也许希望仅仅列出不同(distinct)的值。

3. MAX() 函数返回指定列的最大值。

下面的 SQL 语句从 "Websites" 表的 "alexa" 列获取最大值:

例如: SELECT MAX(alexa) AS max_alexa FROM Websites;

4. MIN() 函数返回指定列的最小值。

下面的 SQL 语句从 "Websites" 表的 "alexa" 列获取最小值:

例如:SELECT MIN(alexa) AS min_alexa FROM Websites;

5.  SUM() 函数返回数值列的总数。

下面的 SQL 语句查找 "access_log" 表的 "count" 字段的总数:

例如:SELECT SUM(count) AS nums FROM access_log;

6. GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组。

现在我们想要查找每个送货员配送的订单数目。

下面的 SQL 语句统计所有网站的访问的记录数:

SELECT Websites.name,COUNT(access_log.aid) AS nums FROM access_log
LEFT JOIN Websites
ON access_log.site_id=Websites.id
GROUP BY Websites.name;

7. HAVING 子句

在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。

HAVING 子句可以让我们筛选分组后的各组数据。

现在我们想要查找总访问量大于 200 的网站,并且 alexa 排名小于 200。

我们在 SQL 语句中增加一个普通的 WHERE 子句:

实例

SELECT Websites.name, SUM(access_log.count) AS nums FROM Websites
INNER JOIN access_log
ON Websites.id=access_log.site_id
WHERE Websites.alexa < 200 
GROUP BY Websites.name
HAVING SUM(access_log.count) > 200;

SQL MID() 实例

我们拥有下面这个 "Persons" 表:

IdLastNameFirstNameAddressCity
1AdamsJohnOxford StreetLondon
2BushGeorgeFifth AvenueNew York
3CarterThomasChangan StreetBeijing

现在,我们希望从 "City" 列中提取前 3 个字符。

我们使用如下 SQL 语句:

SELECT MID(City,1,3) as SmallCity FROM Persons

结果集类似这样:

SmallCity
Lon
New
Bei

 

SQL LEN() 实例

我们拥有下面这个 "Persons" 表:

IdLastNameFirstNameAddressCity
1AdamsJohnOxford StreetLondon
2BushGeorgeFifth AvenueNew York
3CarterThomasChangan StreetBeijing

现在,我们希望取得 "City" 列中值的长度。

我们使用如下 SQL 语句:

SELECT LEN(City) as LengthOfCity FROM Persons

结果集类似这样:

LengthOfCity
6
8
7

 

SQL HAVING 实例

我们拥有下面这个 "Orders" 表:

O_IdOrderDateOrderPriceCustomer
12008/12/291000Bush
22008/11/231600Carter
32008/10/05700Bush
42008/09/28300Bush
52008/08/062000Adams
62008/07/21100Carter

现在,我们希望查找订单总金额少于 2000 的客户。

我们使用如下 SQL 语句:

SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer
HAVING SUM(OrderPrice)<2000

结果集类似:

CustomerSUM(OrderPrice)
Carter1700

SQL UCASE() 实例

我们拥有下面这个 "Persons" 表:

IdLastNameFirstNameAddressCity
1AdamsJohnOxford StreetLondon
2BushGeorgeFifth AvenueNew York
3CarterThomasChangan StreetBeijing

现在,我们希望选取 "LastName" 和 "FirstName" 列的内容,然后把 "LastName" 列转换为大写。

我们使用如下 SQL 语句:

SELECT UCASE(LastName) as LastName,FirstName FROM Persons

结果集类似这样:

LastNameFirstName
ADAMSJohn
BUSHGeorge
CARTERThomas

SQL LCASE() 实例

我们拥有下面这个 "Persons" 表:

IdLastNameFirstNameAddressCity
1AdamsJohnOxford StreetLondon
2BushGeorgeFifth AvenueNew York
3CarterThomasChangan StreetBeijing

现在,我们希望选取 "LastName" 和 "FirstName" 列的内容,然后把 "LastName" 列转换为小写。

我们使用如下 SQL 语句:

SELECT LCASE(LastName) as LastName,FirstName FROM Persons

结果集类似这样:

LastNameFirstName
adamsJohn
bushGeorge
carterThomas

 

SQL ROUND() 实例

我们拥有下面这个 "Products" 表:

Prod_IdProductNameUnitUnitPrice
1gold1000 g32.35
2silver1000 g11.56
3copper1000 g6.85

现在,我们希望把名称和价格舍入为最接近的整数。

我们使用如下 SQL 语句:

SELECT ProductName, ROUND(UnitPrice,0) as UnitPrice FROM Products

结果集类似这样:

ProductNameUnitPrice
gold32
silver12
copper7

 

转载于:https://my.oschina.net/meng527/blog/886224

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值