快捷搜索:  汽车  科技

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等完成分组统计。

excel通过sql取数(Excel零基础学SQL14数据分组统计group)(1)

1、求每个班级的语文总分

select 班级 sum(语文) as 语文总分 from [Sheet1$] group by 班级

excel通过sql取数(Excel零基础学SQL14数据分组统计group)(2)

【注意】group by 班级 子句必不可少。

2、求每个班级的语文平均分

select 班级 avg语文) as 语文平均分 from [Sheet1$] group by 班级

excel通过sql取数(Excel零基础学SQL14数据分组统计group)(3)

3、求每个班级语文的最高分和最低分

select 班级 max(语文) as 语文最高分分 min(语文) as 语文最低分 from [Sheet1$] group by 班级

excel通过sql取数(Excel零基础学SQL14数据分组统计group)(4)

4、求每个班级的考试人数

select 班级 count(*) as 考试人数 from [Sheet1$] group by 班级

excel通过sql取数(Excel零基础学SQL14数据分组统计group)(5)

这里需要注意的是count(*)并不会统计null值(空白)。

将数据中201班38学号的同学语文成绩取消,因为38号同学缺考。

excel通过sql取数(Excel零基础学SQL14数据分组统计group)(6)

然后输入下面的sql语句

select 班级 count(语文) as 考试人数 from [Sheet1$] group by 班级

再刷新数据,结果如下,201班语文参考人数将少1一个。

excel通过sql取数(Excel零基础学SQL14数据分组统计group)(7)

比较稳妥的办法是,在使用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$])

excel通过sql取数(Excel零基础学SQL14数据分组统计group)(8)

换成用group by的写法:

1、提取班级的不重复数据(只对班级进行分组 不统计数据)

select 班级 from [Sheet1$] group by 班级

excel通过sql取数(Excel零基础学SQL14数据分组统计group)(9)

2、使用count进行计数

select count(*) from (select 班级 from [Sheet1$] group by 班级)

excel通过sql取数(Excel零基础学SQL14数据分组统计group)(10)

至于两者的效率问题,读者可以自行测试。

猜您喜欢: