欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

oracle中依据年份统计每月的总数?

更新时间: 2014-01-05 02:15:41 责任编辑: Author_N1

 

oracle中根据年份统计每月的总数???
oracle表结构:
姓名   登记时间    登记人
张三   2011-12-23  王武
李四   2011-12-25  刘敏
周松   2011-11-24  王武
赵思   2011-10-22  王武
赵思   2011-10-01  王武
钱斯   2011-04-06  张松
周松   2011-03-24  王武
钱斯   2011-01-06  张松


要根据年份(如2011)和登记人查出每月登记的总人数
如:
1月份   1(个人)
2月份   0(个人)
3月份   1(个人)
.........
11月份  1(个人)
12月份  2(个人)

语句该怎么写啊???????



 
--参考方法--
select rn
--参考方法--
'月份' ,count(dat)
--参考方法--
'(个人)' from 
(select rownum rn from dual connect by rownum <=12) t1
,
(select substr(to_char(登记时间,'YYYYMMDD'),5,2) dat from a)t2
where t1.rn=t2.dat(+) group by rn order by rn

同一年的,登记时间是Date型 
--参考方法--

WITH T1 AS(
    SELECT ADD_MONTHS(DATE'2010-12-01',LEVEL) AS t_date
    FROM DUAL CONNECT BY LEVEL <= 12
  ),T2 AS(SELECT '张三' 姓名,date'2011-12-23' 时间 , '王武' 登记人 FROM DUAL UNION ALL
          SELECT '李四' 姓名,date'2011-12-25' 时间 , '刘敏' 登记人 FROM DUAL UNION ALL
          SELECT '周松' 姓名,date'2011-11-24' 时间 , '王武' 登记人 FROM DUAL UNION ALL
          SELECT '赵思' 姓名,date'2011-10-22' 时间 , '王武' 登记人 FROM DUAL UNION ALL
          SELECT '赵思' 姓名,date'2011-10-01' 时间 , '王武' 登记人 FROM DUAL UNION ALL
          SELECT '钱斯' 姓名,date'2011-04-06' 时间 , '张松' 登记人 FROM DUAL UNION ALL
          SELECT '周松' 姓名,date'2011-03-24' 时间 , '王武' 登记人 FROM DUAL UNION ALL
          SELECT '钱斯' 姓名,date'2011-01-06' 时间 , '张松' 登记人 FROM DUAL
  )SELECT TO_CHAR(T1.t_date,'YYYY-MM') 月份,NVL(count(T2.时间),0)
--参考方法--
'(个人)' 总人数
     FROM T1 LEFT JOIN T2 ON TO_CHAR(T1.t_date,'YYYY-MM') = TO_CHAR(T2.时间,'YYYY-MM')
    GROUP BY TO_CHAR(T1.t_date,'YYYY-MM')
    ORDER BY TO_CHAR(T1.t_date,'YYYY-MM')

-------------------------------------------------
          月份  总人数
1 2011-01 1(个人)
2 2011-02 0(个人)
3 2011-03 1(个人)
4 2011-04 1(个人)
5 2011-05 0(个人)
6 2011-06 0(个人)
7 2011-07 0(个人)
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:15:41
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/7672/
本文WWW.DOC100.NET DOC100.NET版权所有。