AVG 函数

作用:AVG 函数返回数值列的平均值。NULL 值不包括在计算中

语法:SELECT AVG(列) FROM 表

mysql 平均天数保留两位小数 mysql平均数语句_mysql必会语法

求id平均值(实在没字段了,就是意思意思)

mysql 平均天数保留两位小数 mysql平均数语句_字段_02

id大于平均值的记录

COUNT() 函数

作用:返回匹配指定条件的行数。

语法:SELECT COUNT(列) FROM 表

mysql 平均天数保留两位小数 mysql平均数语句_字段_03

年龄是13的记录有34行

mysql 平均天数保留两位小数 mysql平均数语句_mysql_04

id大于1的年龄不同值2个

FIRST() 函数

作用:返回指定的字段中第一个记录的值。(多与order by 联合使用)

语法:SELECT FIRST(列) FROM 表

!!!这个划重点,贼鸡儿坑,我不知道啥数据支持这个函数,反正mysql,sqlserver,oracle都不支持。

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_name

ORDER BY column_name ASC

WHERE ROWNUM <=1;

因为我这只有mysql数据库,所以就用mysql做例子:

mysql 平均天数保留两位小数 mysql平均数语句_mysql_05

排序某字段并取第一行记录值

LAST() 函数

作用:返回指定的字段中最后一个记录的值。

语法:SELECT LAST(列) FROM 表

这个没啥好说的了。照着上面第三个来,order by反过来就ok了!我也不多说了,毕竟mysql,sqlserver都不直接支持。

MAX() 函数

作用:返回一列中的最大值。NULL 值不包括在计算中

语法:SELECT MAX(列) FROM 表

mysql 平均天数保留两位小数 mysql平均数语句_数据_06

最大年龄

MIN() 函数

作用:返回一列中的最小值。NULL 值不包括在计算中

语法:SELECT MIN(列) FROM 表

mysql 平均天数保留两位小数 mysql平均数语句_mysql_07

age最小值

SUM() 函数

作用:返回数值列的总数(总额)

语法:SELECT SUM(列) FROM 表

mysql 平均天数保留两位小数 mysql平均数语句_字段_08

表中年龄总和

GROUP BY 语句

作用:用于结合合计函数,根据一个或多个列对结果集进行分组。GROUP BY 语句常常与合计函数联合使用。

语法:SELECT 分组列,合计函数(合计列) FROM 表 (如果有条件还可以加where语句) GROUP BY 分组列

其实我觉得这个比较复杂,也不是一个例子两个例子就能完全了解的,甚至我用的也没多少熟练,简单的写几种情况:

因为这个要结合业务,我这里就拿已有的例子简单的写几个情景:

mysql 平均天数保留两位小数 mysql平均数语句_mysql必会语法_09

每个司机的跑单总数

订单状态为0是已完成,所以想查找每个司机已完成的订单数要加个条件,状态为0。

mysql 平均天数保留两位小数 mysql平均数语句_mysql 平均天数保留两位小数_10

每个司机已完成的订单总数

这个和上面的类似,已完成的订单才确定钱数。

mysql 平均天数保留两位小数 mysql平均数语句_mysql 平均天数保留两位小数_11

每个司机跑单应得钱数

规定已完成一周的订单才可以提现,现在求每个司机可提现钱数(execute不为0证明已经提现过,所以不算在内):

这里确定订单是否已完成一周我用了最笨的一种方法,就是当时的创建时间加上七天是否小于当前实现,不小于则说明不够七天,反之同理。

mysql 平均天数保留两位小数 mysql平均数语句_数据_12

每个司机可提现钱数

计算每个司机每天单数统计:这里是按照司机和日期两个字段分组的。实际业务中还容易出现一种需求,那就是如果某天没有数据要补0,保证日期的连续性。但是我目前的知识储备只能做一张日历表关联,比较麻烦,所以这里就不写了。如果大佬们有更好的办法麻烦告知哈,谢谢了。

mysql 平均天数保留两位小数 mysql平均数语句_数据_13

每个司机每天单数

HAVING 子句

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

语法:SELECT 分组列,合计函数(合计列) FROM 表 (如果有条件还可以加where语句) GROUP BY 分组列 HAVING 合计函数(合计列)条件

mysql 平均天数保留两位小数 mysql平均数语句_字段_14

挣钱超过一万五的司机

UCASE() 函数

作用:把字段的值转换为大写。

语法:SELECT UCASE(列) FROM 表

mysql 平均天数保留两位小数 mysql平均数语句_字段_15

image.png

LCASE() 函数

作用:把字段的值转换为小写。

语法:SELECT LCASE(列) FROM 表

用法和上面的大写是一样的,我也不写demo了。

MID() 函数

作用:用于从文本字段中提取字符。

语法:SELECT MID(列,起始下标(从1开始),截取长度(不填默认到结束)) FROM 表

这个我理解为就是一个字符串截取。第一个参数是要截取的列,第二个参数从哪里开始截取(注意的是从1开始,不同于常用的从0开始),第三个参数可写可不写,不写默认是截取到结尾。

mysql 平均天数保留两位小数 mysql平均数语句_数据_16

从第二个到结尾

mysql 平均天数保留两位小数 mysql平均数语句_mysql 平均天数保留两位小数_17

截取1-3

LEN() 函数

作用:返回文本字段中值的长度。注意!!!!!坑又来了,mysql中这个函数写法不同,mysql中是LENGTH();

语法:SELECT LENGTH(列) FROM 表

司机名字的长度

ROUND() 函数

作用:用于把数值字段舍入为指定的小数位数。

语法:SELECT ROUND(字段,小数位数) FROM 表

因为我数据库真的没有小数能做例子,所以这里看不出效果,但是语句运行正常就说明还是有用的。

mysql 平均天数保留两位小数 mysql平均数语句_mysql必会语法_18

image.png

NOW() 函数

作用:返回当前的日期和时间。

语法:这个就是一个函数,我在上文都用到过,就不多说了。

mysql 平均天数保留两位小数 mysql平均数语句_数据_19

image.png

FORMAT() 、DATE_FORMAT()

作用:用于对字段的显示进行格式化。

format()函数:将数据内容格式化的,可以将数据格式化为整数或者带几位小数的浮点数(四舍五入)。

DATE_FORMAT() 函数:用于以不同的格式显示日期/时间数据。

语法:DATE_FORMAT(date,format)

date 参数是合法的日期。format 规定日期/时间的输出格式。

mysql 平均天数保留两位小数 mysql平均数语句_mysql_20

时间格式的写法

对,我说的莫名其妙就是因为这个格式,真的可能是我接触的少,所以很受不了。接下来是两种用法的例子:

mysql 平均天数保留两位小数 mysql平均数语句_mysql必会语法_21

两种格式化的用法