写了这么多天,终于把SELECT语句写完了。
分组统计查询---GROUP BY
格式:
SELECT {DISTINCT} |详细的列 别名

FROM 表名称
{WHERE 条件(s)}
{GROUP BY 分组条件}
{ORDER BY 排序的字段 1,排序的字段 2,ASC|DESC}
(1)求出每个班级的职员数量
SELECT class,count()
FROM class
group by class;
(2)求出每个课程的均匀分数
SELECT scno,avg(score)
FROM score
group by scno;
把稳
缺点写法:
SELECT scno,avg(score) FROM score;
第一种精确写法:
SELECT avg(score) FROM score;
第二种精确写法:
SELECT scno,avg(score) FROM score group by scno;
为什么会涌现上面的情形,是由于分组函数的存在:
1.如果分组函数存在,要显示分组条件的字段,则须要加上分组条件
2.如果分组函数单独利用,可以不用加上分组条件
在没有分组条件存在的情形下,分组函数必须单独存在
如果有分组条件GROUP BY,显示结果集可以包含分组条件的字段,其它的字段不能涌现
缺点的写法:
SELECT scno,xuehao,avg(score) FROM score group by scno;
分组条件---HAVING只涌如今GROUP BY后面的语句
SELECT完全的格式:
SELECT {DISTINCT} |详细的列 别名
FROM 表名称,{
SELECT {DISTINCT} |详细的列 别名
FROM 表名称
{WHERE 条件(s)}
{GROUP BY 分组条件 HAVING 分组函数}
{ORDER BY 排序的字段1 ASC|DESC,排序的字段2 ASC|DESC}
} 别名……
{WHERE 条件(s){
SELECT {DISTINCT} |详细的列 别名
FROM 表名称
{WHERE 条件(s)}
{GROUP BY 分组条件 HAVING 分组函数}
{ORDER BY 排序的字段1 ASC|DESC,排序的字段2 ASC|DESC}}
{GROUP BY 分组条件 HAVING 分组函数}
{ORDER BY 排序的字段1 ASC|DESC,排序的字段2 ASC|DESC}
(1)求出均匀分数大于90的课程号
缺点写法:
SELECT scno FROM score WHERE avg(score) > 2000;
缺点提示:1111 - Invalid use of group function
分组函数不许可涌如今WHERE条件中,必须与group by 分组条件搭配利用
精确写法:
SELECT scno FROM score
GROUP BY scno HAVING avg(score) > 90;
(2)查询出班级人数大于5人的班级名称
SELECT class FROM class
GROUP BY class HAVING count() >5;
完全版的SQL系列:
软件测试职员不可不知的SQL措辞之大略查询(SELECT)
SQL:INNER JOIN,LEFT JOIN,RIGHT JOIN,哪一个连接查询更合你意
高等软件测试职员一定要节制的SQL措辞之嵌套查询(MYSQL)
SQL措辞练习数据:class表 AND course表 AND score表构造和数据
软件测试职员:你们须要用到SQL函数么?(sum,count,avg...)
王豆豆不喜好搬运,这些文章都是王豆豆逐步写出来,花了不少劲力,未经王豆豆赞许,不予转载,如要转载,请注明出处。