excel通过sql取数(Excel零基础学SQL14数据分组统计group)
excel通过sql取数(Excel零基础学SQL14数据分组统计group)4、求每个班级的考试人数select 班级 max(语文) as 语文最高分分 min(语文) as 语文最低分 from [Sheet1$] group by 班级2、求每个班级的语文平均分select 班级 avg语文) as 语文平均分 from [Sheet1$] group by 班级3、求每个班级语文的最高分和最低分
group by子句常常和聚合函数sum、avg、min、max、count等完成分组统计。
1、求每个班级的语文总分
select 班级 sum(语文) as 语文总分 from [Sheet1$] group by 班级
【注意】group by 班级 子句必不可少。
2、求每个班级的语文平均分
select 班级 avg语文) as 语文平均分 from [Sheet1$] group by 班级
3、求每个班级语文的最高分和最低分
select 班级 max(语文) as 语文最高分分 min(语文) as 语文最低分 from [Sheet1$] group by 班级
4、求每个班级的考试人数
select 班级 count(*) as 考试人数 from [Sheet1$] group by 班级
这里需要注意的是count(*)并不会统计null值(空白)。
将数据中201班38学号的同学语文成绩取消,因为38号同学缺考。
然后输入下面的sql语句
select 班级 count(语文) as 考试人数 from [Sheet1$] group by 班级
再刷新数据,结果如下,201班语文参考人数将少1一个。
比较稳妥的办法是,在使用count的时候,先对数据进行筛选。
count,往往容易让人忽略或误解。
使用 where 语文 is not null过滤掉语文缺考的数据后,然后再用count统计。
如需要将null进行统计,可以使用count(*) 同时count(*)的效率也远高于count(字段名称).
5、group by还有去重复的作用,因为其是分组,需要去重复。
如求班级一共有几个。
思路:1、先提取班级的不重复数据--->2、用count进行计数
sql语句如下:
select count(*) from (select distinct 班级 from [Sheet1$])
换成用group by的写法:
1、提取班级的不重复数据(只对班级进行分组 不统计数据)
select 班级 from [Sheet1$] group by 班级
2、使用count进行计数
select count(*) from (select 班级 from [Sheet1$] group by 班级)
至于两者的效率问题,读者可以自行测试。