一、去空格函数
1、LTRIM() 把字符串头部的空格去掉。
2、RTRIM() 把字符串尾部的空格去掉。
二、统计函数
AVG ( ) -返回的平均价值
count( ) -返回的行数
first( ) -返回第一个值
last( ) -返回最后一个值
max( ) -返回的最大价值
min( ) -返回最小的价值
total( ) -返回的总和
日期函数:CURDATE() 函数返回当前的日期。2017-12-30
NOW() CURDATE() CURTIME()
2008-12-29 16:25:46 2008-12-29 16:25:46
DATE_SUB() 函数从日期减去指定的时间间隔。
例:DATE_SUB(CURDATE(),INTERVAL 7 DAY) 最近7天
DATE_SUB(date,INTERVAL expr type)
date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。
type 参数可以是下列值:
GROUP_CONCAT(name SEPARATOR ' ')空格分隔符,默认是 ,
三、datediff()
简单介绍一下datediff()函数。
定义和用法
DATEDIFF() 函数返回两个日期之间的天数。
语法
DATEDIFF(datepart,startdate,enddate)
startdate 和 enddate 参数是合法的日期表达式。
datepart 参数可以是下列的值:
四、一些例子
①、rq 胜负
2017-02-06 胜
2017-02-06 负
2017-02-07 负
2017-02-07 负
查询结果:
rq 胜 负
2017-02-06 1 1
2017-02-07 0 2
方法一:
SELECT rq ,
SUM(CASE WHEN shengfu='胜' THEN 1 ELSE 0 END)AS sheng,
SUM(CASE WHEN shengfu='负' THEN 1 ELSE 0 END)AS fu
FROM t GROUP BY rq
方法二:
SELECT a.rq,a.sheng,b.fu FROM
(SELECT rq,sheng=COUNT(*)FROM tem WHERE shengfu='胜' GROUP BY rq)a
INNER JOIN
(SELECT rq,fu=COUNT(*)FROM tem WHERE shengfu='fu'GROUP BY rq)b
ON a.rq=b.rq
②、
姓名 科目 成绩
李四 语文 90
李四 数学 79
王五 数学 80
王五 英语 90
赵六 英语 87
周六 语文 79
查询每门课都大于80的学生姓名
方法一:
SELECT DISTINCT mingzi FROM TABLE
WHERE mingzi NOT IN (SELECT DISTINCT mingzi FROM TABLE WHERE fenshu<=80)
方法二:
SELECT mingzi
FROM TABLE
GROUP BY mingzi
HAVING MIN(fenshu)>80
1、LTRIM() 把字符串头部的空格去掉。
2、RTRIM() 把字符串尾部的空格去掉。
二、统计函数
AVG ( ) -返回的平均价值
count( ) -返回的行数
first( ) -返回第一个值
last( ) -返回最后一个值
max( ) -返回的最大价值
min( ) -返回最小的价值
total( ) -返回的总和
日期函数:CURDATE() 函数返回当前的日期。2017-12-30
NOW() CURDATE() CURTIME()
2008-12-29 16:25:46 2008-12-29 16:25:46
DATE_SUB() 函数从日期减去指定的时间间隔。
例:DATE_SUB(CURDATE(),INTERVAL 7 DAY) 最近7天
DATE_SUB(date,INTERVAL expr type)
date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。
type 参数可以是下列值:
GROUP_CONCAT(name SEPARATOR ' ')空格分隔符,默认是 ,
三、datediff()
简单介绍一下datediff()函数。
定义和用法
DATEDIFF() 函数返回两个日期之间的天数。
语法
DATEDIFF(datepart,startdate,enddate)
startdate 和 enddate 参数是合法的日期表达式。
datepart 参数可以是下列的值:
四、一些例子
①、rq 胜负
2017-02-06 胜
2017-02-06 负
2017-02-07 负
2017-02-07 负
查询结果:
rq 胜 负
2017-02-06 1 1
2017-02-07 0 2
方法一:
SELECT rq ,
SUM(CASE WHEN shengfu='胜' THEN 1 ELSE 0 END)AS sheng,
SUM(CASE WHEN shengfu='负' THEN 1 ELSE 0 END)AS fu
FROM t GROUP BY rq
方法二:
SELECT a.rq,a.sheng,b.fu FROM
(SELECT rq,sheng=COUNT(*)FROM tem WHERE shengfu='胜' GROUP BY rq)a
INNER JOIN
(SELECT rq,fu=COUNT(*)FROM tem WHERE shengfu='fu'GROUP BY rq)b
ON a.rq=b.rq
②、
姓名 科目 成绩
李四 语文 90
李四 数学 79
王五 数学 80
王五 英语 90
赵六 英语 87
周六 语文 79
查询每门课都大于80的学生姓名
方法一:
SELECT DISTINCT mingzi FROM TABLE
WHERE mingzi NOT IN (SELECT DISTINCT mingzi FROM TABLE WHERE fenshu<=80)
方法二:
SELECT mingzi
FROM TABLE
GROUP BY mingzi
HAVING MIN(fenshu)>80