数据库 怎么进行统计

数据库 怎么进行统计,第1张

1.用SELECT语句对数据进行统计

2.集合函数(聚合函数,统计函数)

3.为了有效处理查询得到的数据集合,SQL Server提供了一系列统计函数.

4.这些函数可以实现数据集合和汇总:

avg ([ALL|DISTINCT]列名) 求指定数字字段的平均值

sum ([ALL|DISTINCT]列名) 求指定数字字段的总和

max([ALL|DISTINCT]列名) 求指定数字字段中最大值

min ([ALL|DISTINCT]列名) 求指定数字字段中最小值

count([ALL|DISTINCT]列名) 求满足条件记录中指定字段不为空的记录个数

count(*) 求满足条件记录总数

5.用GROUP BY子句对记录分类统计汇总

格式:

GROUP BY 分组字段名列表[HAVING 条件表达式]

功能:按指定条件对指定字段依次分组进行统计汇总

注:

使用GROUP BY 的语句仍可用ORDER BY子句排序

但必须在GROUP BY之后可以使用别名但不允许对SELECT没指定的列排序

HAVING子句是对分组统计后的查询结果进行筛选.

使用GROUP BY 的select语句仍可用WHERE子句指定条件.

假设原表名为T,统计表(表名为C)为月份、姓名、出勤情况三个字段,那么你每个月要向这个统计表插入一次记录

我不知道你这个出勤情况怎么算的,假设为1,0.5,0(全勤,半勤,未出勤)

insert into C values (select to_char(日期,'yymmdd'),姓名,sum(出勤情况) from T where to_char(日期,'yymmdd')='200801' group by 姓名)

那么就得到每个人08年1月的出勤情况了:

月份 姓名 出勤情况

200801 张三 27.5

*************************************************

假设为出勤情况用文字表示,全勤,半勤,未出勤

那么统计表(表名为C)为月份、姓名、出勤情况、次数;那么就要分别插入了。

insert into C values(select col1,col2,col3,col5 from (select to_char(日期,'yymmdd') col1,姓名 col2,出勤情况 col3,姓名||出勤情况 col4,count(*) col5 from T where to_char(日期,'yymmdd')='200801' group by 姓名||出勤情况) temptable)

可以得到:(当然我这里一次插入,也可以分开插入)

月份 姓名 出勤情况 次数

200801 张三 全勤 20

200801 张三 半勤 7

200801 张三 未出勤 4

以上为oracle数据库写法,如果是其他数据库,有些地方可能要调整一下。

有问题请继续补充。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9905619.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存