sql查询分组统计平均数(高级软件测试人员一定要掌握的SQL之分组统计)
sql查询分组统计平均数(高级软件测试人员一定要掌握的SQL之分组统计)(1)求出每个班级的人员数量{ORDER BY 排序的字段 1 排序的字段 2 ASC|DESC}FROM 表名称 {WHERE 条件(s)} {GROUP BY 分组条件}
未经王豆豆同意,不予转载,如要转载,请注明出处。
写了这么多天,终于把SELECT语句写完了。
格式:
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)
为什么会出现上面的情况 是因为分组函数的存在:
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...)
王豆豆不喜欢搬运,这些文章都是王豆豆慢慢写出来,花了不少劲力,未经王豆豆同意,不予转载,如要转载,请注明出处。