首页 > 数据库技术 > 详细

Oracle 简单统计示例

时间:2019-05-08 15:18:22      阅读:125      评论:0      收藏:0      [点我收藏+]

有数据如下:

技术分享图片

eg1:现在需要统计所有男性人员数量,所有女性人员数量,sclassno=10000的男性人员的总年龄,年龄大于20的女性人员数量

----sign( number )
/*If number < 0, then sign returns -1.
If number = 0, then sign returns 0.
If number > 0, then sign returns 1*/

select count(decode(t.sgender, M, 1, null)) "男性人员数量",
count(decode(t.sgender, F, 1, null)) "女性人员数量",
sum(decode(t.sclassno, 10000, decode(t.sgender, M, t.sage, 0), 0)) "10000的男性人员的总年龄",
count(decode(t.sgender,
F,
decode(sign(t.sage - 20), 1, 1, null),
null)) ">20女性数量", 
--另一种写法 
count(decode(t.sgender,F,(case when t.sage > 20 then 1 else null end),null)) ">20女性数量" 
from l_student_info_tbl t;

技术分享图片

eg2:统计每个班级人员的男女数量,总年龄

select t.sclassno "班级",
       count(decode(t.sgender, M, 1, null)) "男性人员数量",
       count(decode(t.sgender, F, 1, null)) "女性人员数量",
       sum(decode(t.sgender, M, t.sage, 0)) "男性总年龄",
       sum(decode(t.sgender, F, t.sage, 0)) "女性总年龄"
  from l_student_info_tbl t
 group by t.sclassno

 技术分享图片

 

Oracle 简单统计示例

原文:https://www.cnblogs.com/xiaozhuanfeng/p/10831911.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!