写了这么多天,终于把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…)
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!