SQL——统计检索函数

数据库 同时被 2 个专栏收录
20 篇文章 0 订阅
52 篇文章 0 订阅

分组:group by 字段名  将此字段值相同的分到一组一块显示

select * from 表 
where ...
gruop by 字段名1[,字段名2];
--gruop by 所带的字段为多个时,把多个看成一组,都相同为一组。

注:加group by后select 后的结果列必须是组的共同代表
错误示例:

select 
sname "姓名",--加这一行会报错,因为结果是每组一行,但每组却并没有统一的的sname,所以出错
sclass "班级",
count(*) "人数",
count(sage) "年龄数",
avg(sage) "平均年龄",
min(sage) "最小年龄",
max(sage) "最大年龄",
sum(sage) "总年龄"
from student
group by sclass

count :计数

count(*):统计表中记录数
count(字段名):统计字段值不为空的记录条数
没有gruop by :整个table
有gruop by : 分组内

sum:求和

sum(字段名):对每组内,个条记录相应字段的值求和

avg:均值

avg(字段名):组内的平均值=sum/count 字段名为number型
注:空值不参与运算

min、max:组内最小\大值

min(字段名)、max(字段名)
注:字段为文本按ASCII码排大小,null值不参与计算

drop table student;

create table student
(
sno char(5),
sname varchar2(20),
sage number(2),
sclass char(5)
); 

insert into student values('10001','Tom',29,'97001');
insert into student values('10002','Lili',20,'97004');
insert into student values('10003','Jerry',22,'97001');
insert into student values('10004','Anti',21,'97002');
insert into student values('10005','John',null,'97002');
commit;

select * from student;

select 
sclass "班级",
count(*) "人数",
count(sage) "年龄数",
avg(sage) "平均年龄",
min(sage) "最小年龄",
max(sage) "最大年龄",
sum(sage) "总年龄"
from student
group by sclass;

--having语句:只要某一组的数据
select 
sname "姓名",--会报错,因为结果是每组一行,但每组却并没有统一的的sname,所以出错
sclass "班级",
count(*) "人数",
count(sage) "年龄数",
avg(sage) "平均年龄",
min(sage) "最小年龄",
max(sage) "最大年龄",
sum(sage) "总年龄"
from student
group by sclass
havin sclass='97001';


 

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页

打赏作者

虚心求教的少年

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值