1 聚合函数的使用
一 求数据最大值Sum
示例:Select SUM(学时) from t_kecheng;
二 求数据平均值Avg
示例:SELECT AVG (学时) FROM t_kecheng;
三 查询数据条数Count
示例:SELECT COUNT(*) FROM `t_kecheng`;
四 查询数据最大值Max
示例 SELECT MAX(成绩) FROM `t_kecheng_chengji`;
五 查询数据最小值Min
示例:SELECT MIN(成绩) FROM `t_kecheng_chengji`;
2 取绝对值函数ABS(数值)
3 四舍五入函数ROUND(X)
返回参数X的四舍五入的一个整数。
select ROUND(1.58);
select ROUND(-1.58);
round(x,d) x指要处理的数,d是指保留几位小数
这里有个值得注意的地方是,d可以是负数,这时是指定小数点左边的d位整数位为0,同时小数位均为0;
【例】:
查询: select round(1123.26723,2);
结果:1123.27
4 DISTINCT
- 在count计算不重复的记录的时候能用到
例:SELECT COUNT( DISTINCT DepartmentID )
FROM employees;
就是计算employees表中id不同的记录有多少条
2、在需要返回记录不同的id的具体值的时候可以用
例:查询employees表部门号和性别,要求消除重复行
USE db_employ;
SELECT DISTINCT DepartmentID 地址,Sex 性别
FROM employees
返回employees表中不同的id的具体的值
3、上面的情况2对于需要返回mysql表中2列以上的结果时会有歧义
比如SELECT DISTINCT player_id, task_id FROM task;
实际上返回的是player_id与task_id同时不相同的结果,也就是DISTINCT同时作用了两个字段,必须得player_id与task_id都相同的才被排除了,与我们期望的结果不一样,我们期望的是player_id不同被过滤
在这种情况下,distinct同时作用了两个字段,player_id,task_id
这时候可以考虑使用group_concat函数来进行排除,不过这个mysql函数是在mysql4.1以上才支持的
其实还有另外一种解决方式,就是使用
SELECT player_id, task_id, count(DISTINCT player_id) FROM task.
虽然这样的返回结果多了一列无用的count数据(有时也许就需要这个数据)
4、同时我们还可以利用下面的方式解决2遇到的歧义问题通过group by 分组
select player_id,task_id from task group by player_id
distinct 优化
5 substring函数
1、格式:select substring(string,position)
例 从“MYSQL SUBSTRING”中提取”Substring”
SELECT SUBSTRING('MYSQL SUBSTRING', 7)
要从“MySQL SUBSTRING”字符串中获取子字符串:“SUBSTRING”,子串的位置必须从7开始
如果position参数为零,则SUBSTRING函数返回一个空字符串:
SELECT SUBSTRING('MYSQL SUBSTRING', 0);
- 格式:select substring(string,position,length)
例:从"MySQL SUBSTRING"获取"MySQL"
SELECT SUBSTRING('MySQL SUBSTRING',1,5)
或SELECT SUBSTRING('MySQL SUBSTRING' FROM 1 FOR 5)
或SELECT SUBSTRING('MySQL SUBSTRING' FROM -15 FOR 5);
关键字、函数有点迷。。。
持续更新。。。