1. AVG() 函数
SELECT AVG(column_name) AS xxx FROM table_name
// 从access_log中选择site_id和count,当count比count平均值大时
SELECT site_id, count FROM access_log WHERE count > (SELECT AVG(count) FROM access_log);
2. count函数
1)COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入):
SELECT COUNT(column_name) FROM table_name;
2)COUNT(*) 函数返回表中的记录数:
SELECT COUNT(*) FROM table_name;
3)返回指定列的不同值的数目:
SELECT COUNT(DISTINCT column_name) FROM table_name;
3. first函数 只有MS Access支持:返回指定的列中第一个记录的值。
Mysql实现:
SELECT column_name FROM table_name
ORDER BY column_name ASC
LIMIT 1;
升序排列,只展示第一个
4. last函数 返回指定的列中最后一个记录的值。
Mysql实现:
SELECT column_name FROM table_name
ORDER BY column_name DESC
LIMIT 1;
5. MAX函数:返回指定列的最大值。
SELECT MAX(alexa) AS max_alexa FROM Websites;
6. MIN() :函数返回指定列的最小值。
SELECT MIN(alexa) AS min_alexa FROM Websites;
7. SUM() :函数返回数值列的总数。
SELECT SUM(count) AS nums FROM access_log;
8. GROUP BY:用于结合聚合函数,根据一个或多个列对结果集进行分组。
1)简单应用
选择id和count,按site_id分组,对不同site_id的count数进行统计
SELECT site_id, SUM(access_log.count) AS nums
FROM access_log GROUP BY site_id;
2)GROUP BY 多表连接
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;
9. 在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。
HAVING 子句可以让我们筛选分组后的各组数据。
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;
10. UCASE() 函数把字段的值转换为大写。
SELECT UCASE(column_name) FROM table_name;
11. LCASE() 函数把字段的值转换为小写。
SELECT LCASE(column_name) FROM table_name;
12. MID() 函数用于从文本字段中提取字符。
// 提取name列的前4个字符
SELECT MID(name,1,4) AS ShortTitle FROM Websites;
13. LENGTH() 函数返回文本字段中值的长度。
SELECT name, LENGTH(url) as LengthOfURL FROM Websites;
14. ROUND() 函数用于把数值字段舍入为指定的小数位数。
1)ROUND(X): 返回参数X的四舍五入的一个整数。
mysql> select ROUND(-1.23);
-> -1
mysql> select ROUND(-1.58);
-> -2
mysql> select ROUND(1.58);
-> 2
2)ROUND(X,D): 返回参数X的四舍五入的有 D位小数的一个数字。如果D为0,结果将没有小数点或小数部分。
mysql> select ROUND(1.298, 1);
-> 1.3
mysql> select ROUND(1.298, 0);
-> 1
15. NOW() 函数返回当前系统的日期和时间。
下面的 SQL 语句从 "Websites" 表中选取 name,url,及当天日期:
SELECT name, url, Now() AS date FROM Websites;
16. FORMAT() 函数用于对字段的显示进行格式化。
SELECT FORMAT(column_name,format) FROM table_name;
column_name 必需。要格式化的字段。
format 必需。规定格式。
下面的 SQL 语句从 "Websites" 表中选取 name, url 以及格式化为 YYYY-MM-DD 的日期:
SELECT name, url, DATE_FORMAT(Now(),'%Y-%m-%d') AS date FROM Websites;