一、SQL Aggregate 函数:

  SQL Aggregate 函数计算从列中取得的值,返回一个单一的值。

1、AVG() 函数

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

  语法:SELECT AVG(column_name) FROM table_name

//从 "access_log" 表的 "count" 列获取平均值:
SELECT AVG(count) AS CountAverage FROM access_log;
//选择访问量高于平均访问量的 "site_id" 和 "count":可以当条件
SELECT site_id, count FROM access_log
WHERE count > (SELECT AVG(count) FROM access_log);

2、COUNT() 函数

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

  (1)COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入):

  语法:SELECT COUNT(column_name) FROM table_name;

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

  语法:SELECT COUNT(*) FROM table_name;

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

  语法:SELECT COUNT(DISTINCT column_name) FROM table_name;

  注释:COUNT(DISTINCT) 适用于 ORACLE 和 Microsoft SQL Server,但是无法用于 Microsoft Access。

//计算 "access_log" 表中 "site_id"=3 的总访问量:
SELECT COUNT(count) AS nums FROM access_log
WHERE site_id=;
//计算 "access_log" 表中总记录数:
SELECT COUNT(*) AS nums FROM access_log;
//计算 "access_log" 表中不同 site_id 的记录数:
SELECT COUNT(DISTINCT site_id) AS nums FROM access_log;

3、FIRST() 函数

  FIRST() 函数返回指定的列中第一个记录的值。

  语法:SELECT FIRST(column_name) FROM table_name;

  注释:只有 MS Access 支持 FIRST() 函数。

  SQL Server 语法:SELECT TOP 1 column_name FROM table_name ORDER BY column_name ASC;

  MySQL 语法:SELECT column_name FROM table_name ORDER BY column_name ASC LIMIT 1;

  Oracle 语法:SELECT column_name FROM table_nameORDER BY column_name ASC WHERE ROWNUM <=1;

//SQL 语句选取 "Websites" 表的 "name" 列中第一个记录的值:
SELECT name AS FirstSite FROM Websites LIMIT ;

4、LAST() 函数

  LAST() 函数返回指定的列中最后一个记录的值。

  语法:SELECT LAST(column_name) FROM table_name;

  注释:只有 MS Access 支持 LAST() 函数。

  SQL Server 语法:SELECT TOP 1 column_name FROM table_name ORDER BY column_name DESC;

  MySQL 语法:SELECT column_name FROM table_name ORDER BY column_name DESC LIMIT 1;

  Oracle 语法:SELECT column_name FROM table_name ORDER BY column_name DESC WHERE ROWNUM <=1;

//SQL 语句选取 "Websites" 表的 "name" 列中最后一个记录的值:
SELECT name FROM Websites
ORDER BY id DESC
LIMIT ;

5、MAX() 函数

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

  语法:SELECT MAX(column_name) FROM table_name;

//从 "Websites" 表的 "alexa" 列获取最大值:
SELECT MAX(alexa) AS max_alexa FROM Websites;

6、MIN() 函数

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

  语法:SELECT MIN(column_name) FROM table_name;

//从 "Websites" 表的 "alexa" 列获取最小值
SELECT MIN(alexa) AS min_alexa FROM Websites;

7、SUM() 函数

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

  语法:SELECT SUM(column_name) FROM table_name;

//查找 "access_log" 表的 "count" 字段的总数:
SELECT SUM(count) AS nums FROM access_log;

二、GROUP BY 语句:

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

  语法:

  SELECT column_name, aggregate_function(column_name)
  FROM table_name
  WHERE column_name operator value
  GROUP BY column_name;

//统计 access_log 各个 site_id 的访问量:
SELECT site_id, SUM(access_log.count) AS nums
FROM access_log GROUP BY site_id;

  多表连接:

//统计所有网站的访问的记录数:
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;

三、HAVING 子句:

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

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

  语法:

  SELECT column_name, aggregate_function(column_name)
  FROM table_name
  WHERE column_name operator value
  GROUP BY column_name
  HAVING aggregate_function(column_name) operator value;
//查找总访问量大于 200 的网站。
SELECT Websites.name, Websites.url, SUM(access_log.count) AS nums FROM (access_log
INNER JOIN Websites
ON access_log.site_id=Websites.id)
GROUP BY Websites.name
HAVING SUM(access_log.count) > ;

//想要查找总访问量大于 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 <
GROUP BY Websites.name
HAVING SUM(access_log.count) > ;

四、SQL Scalar 函数:

  SQL Scalar 函数基于输入值,返回一个单一的值。

1、UCASE() 函数

  UCASE() 函数把字段的值转换为大写。

  语法:SELECT UCASE(column_name) FROM table_name;

  用于 SQL Server 的语法:SELECT UPPER(column_name) FROM table_name;

//从 "Websites" 表中选取 "name" 和 "url" 列,并把 "name" 列的值转换为大写:
SELECT UCASE(name) AS site_title, url
FROM Websites;

2、LCASE() 函数

  LCASE() 函数把字段的值转换为小写。

  语法:SELECT LCASE(column_name) FROM table_name;

  用于 SQL Server 的语法:SELECT LOWER(column_name) FROM table_name;

3、MID() 函数

  MID() 函数用于从文本字段中提取字符。

  语法:SELECT MID(column_name,start[,length]) FROM table_name;

  (1)column_name:必需。要提取字符的字段。

  (2)start:必需。规定开始位置(起始值是 1)。

  (3)length:可选。要返回的字符数。如果省略,则 MID() 函数返回剩余文本。

//从 "Websites" 表的 "name" 列中提取前 4 个字符:
SELECT MID(name,,) AS ShortTitle
FROM Websites;

4、LEN() 函数

  LEN() 函数返回文本字段中值的长度。

  语法:SELECT LEN(column_name) FROM table_name;

  MySQL 中函数为 LENGTH():SELECT LENGTH(column_name) FROM table_name;

//从 "Websites" 表中选取 "name" 和 "url" 列中值的长度:
SELECT name, LENGTH(url) as LengthOfURL
FROM Websites;

5、ROUND() 函数

  ROUND() 函数用于把数值字段舍入为指定的小数位数。

  语法:SELECT ROUND(column_name,decimals) FROM table_name;

  参数均必需:(1)要舍入的字段;(2)规定要返回的小数位数。

//ROUND(X): 返回参数X的四舍五入的一个整数。
mysql> select ROUND(-1.23);
-> -
mysql> select ROUND(-1.58);
-> -
mysql> select ROUND(1.58);
->
//ROUND(X,D): 返回参数X的四舍五入的有 D 位小数的一个数字。如果D为0,结果将没有小数点或小数部分。
mysql> select ROUND(1.298, );
-> 1.3
mysql> select ROUND(1.298, );
->

6、NOW() 函数

  NOW() 函数返回当前系统的日期和时间。

  语法:SELECT NOW() FROM table_name;

//从 "Websites" 表中选取 name,url,及当天日期:
SELECT name, url, Now() AS date
FROM Websites;

7、FORMAT() 函数

  FORMAT() 函数用于对字段的显示进行格式化。

  语法:SELECT FORMAT(column_name,format) FROM table_name;

  参数:column_name:必需。要格式化的字段。

     format:必需。规定格式。

//从 "Websites" 表中选取 name, url 以及格式化为 YYYY-MM-DD 的日期:
SELECT name, url, DATE_FORMAT(Now(),'%Y-%m-%d') AS date
FROM Websites;

SQL基础(五):SQL函数的更多相关文章

  1. SQL基础学习_05_函数、谓词、CASE表达式

    函数 算术函数 1. 四则运算: +.-.*./  2. ABS:求绝对值, ABS(数值) 3. MOD: 求余,MOD(被除数,除数) 4. ROUND:四舍五入,ROUND(对象数值,保留小数的 ...

  2. SQL 基础命令和函数

    [数据操作] SELECT --从数据库表中检索数据行和列 INSERT --向数据库表添加新数据行 DELETE --从数据库表中删除数据行 UPDATE --更新数据库表中的数据 [数据定义] C ...

  3. SQL基础五(作业代码)

    create database stuinfo create table student ( mid ) not null primary key, mname ) not null ) create ...

  4. (大数据工程师学习路径)第四步 SQL基础课程----SQL介绍及mysql的安装

    一.数据库和SQL介绍 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它的产生距今已有六十多年.随着信息技术和市场的发展,数据库变得无处不在:它在电子商务.银行系统等众多领域都 ...

  5. C++学习基础五之函数参数——形参

    一.理论部分 C++中函数形参主要分为两类,如图1所示, 图1 总结: 一.当函数参数为非引用形参时,传进函数体内的是实参的拷贝,(注意,对于基本类型而言,拷贝的是实参的值,对于指针而言拷贝的是实参的 ...

  6. Linux基础(五) Shell函数

    Shell 函数 linux shell 可以用户定义函数,然后在shell脚本中可以随便调用. shell中函数的定义格式如下: [ function ] funname [()] { action ...

  7. python基础五(函数、全局变量和局部变量)

    一.全局变量和局部变量 全局变量,即可以在当前文件所有地方都可使用的变量,一次修改,整个文件都影响.如果函数体内部使用全局变量,要先声明global 局部变量,只能在函数体内部使用,除了函数体就不可使 ...

  8. SQL基础--&gt;层次化查询(START BY ... CONNECT BY PRIOR)

    --====================================================== --SQL基础-->层次化查询(START BY ... CONNECT BY ...

  9. 数据库学习---SQL基础(一)

     数据库学习---SQL基础(一) 数据库学习---SQL基础(二) 数据库学习---SQL基础(三) SQL(struct query language)结构化查询语言:一种专门与数据库通信的语言, ...

  10. [SQL] SQL 基础知识梳理(五) - 复杂查询

    SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理( ...

随机推荐

  1. Fiddler手机抓包,相关细节回顾

    目录 0. 准备工作 1. Fiddler配置 2. iPhone配置 3. 抓包示例 上篇Fiddler教程,我们教了大家Fiddler安装配置及如何使用Fiddler进行基本的Http抓包及模拟请 ...

  2. SQLSERVER2014集群实战——DNS的坑

    近几日生产环境总是偶发的出现数据库连接失败的错误,一开始并未引起重视,因为反馈的人很少,而且应用服务器与数据库服务器都处在同一机房的内网环境,相互之间的访问应该是很稳定的.直到早上有几分钟的时间里出现 ...

  3. 线性表之单链表C++实现

    线性表之单链表 一.头文件:LinkedList.h //单链表是用一组任意的存储单元存放线性表的元素,这组单元可以是连续的也可以是不连续的,甚至可以是零散分布在内存中的任意位置. //单链表头文件 ...

  4. HNOI2018 两天扫雷训练营

    Day -1 不知道干什么 学了下插头DP,随意看了几道题 Day 0 还是不知道干什么 打了一天的模板,1700多行.... 随意学了下回文树 Day 1 上午:各种丢人(好像没人注意) 电脑一开就 ...

  5. 王彪-20162321-Java程序设计与数据结构2nd-第十周学习总结

    学习目标 讨论有向图和无向图 定义带权图并讨论它们的应用 定义图的广度优先遍历和深度优先遍历 定义最小生成树 讨论图的实现策略 书中图的基本定义 图是由结点及结点间的连接组成的,结点称为顶点,结点间的 ...

  6. 使用 Nexus 搭建私服仓库时我犯的一个小错误

    私服搭建好,啥都配置好了,纳闷的是 Repositories 中的 group 为何总是空值?我还反反复复删了又重建,结果还是一样,不经意间再看 Configuration 选项卡的内容,发现左右两个 ...

  7. HDU 5683 zxa and xor 暴力模拟

    zxa and xor 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5683 Description zxa had a great interes ...

  8. Codeforces #254 div1 B. DZY Loves FFT 暴力乱搞

    B. DZY Loves FFT 题目连接: http://codeforces.com/contest/444/problem/B Description DZY loves Fast Fourie ...

  9. POJ 3061 Subsequence 尺取法,一个屌屌的O(n)算法

    Subsequence Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9050   Accepted: 3604 Descr ...

  10. CodeForces 32C. Flea 水题

    C. Flea time limit per test 2 seconds memory limit per test 256 megabytes input standard input outpu ...