table
ID 回帖用户 回帖时间
1 aaaaaa 2010-5-15 10:20:20
2 bbbbbb 2010-5-16 10:20:20
3 cccccc 2010-5-17 10:20:20
4 dddddd 2010-5-18 10:20:20
5 aaaaaa 2010-5-18 19:29:55
6 aaaaaa 2010-5-18 20:33:42回帖时间DATE类型
——————————————————————————————现在需要用一条SQL语句统计出 2010年5月份 回帖总数 以及 回帖用户数。条件只给出年份以及月份,都是INT类型的,请问保证效率的情况下SQL语句如何写!
ID 回帖用户 回帖时间
1 aaaaaa 2010-5-15 10:20:20
2 bbbbbb 2010-5-16 10:20:20
3 cccccc 2010-5-17 10:20:20
4 dddddd 2010-5-18 10:20:20
5 aaaaaa 2010-5-18 19:29:55
6 aaaaaa 2010-5-18 20:33:42回帖时间DATE类型
——————————————————————————————现在需要用一条SQL语句统计出 2010年5月份 回帖总数 以及 回帖用户数。条件只给出年份以及月份,都是INT类型的,请问保证效率的情况下SQL语句如何写!
解决方案 »
- DB2 向ORACLE 迁移 一个SQL语句问题
- 收集rownum和order by的合用方法,希望大家各抒己见,做个整理
- 求助ORACLE 中保存clob类型出现如下错误,我用的weblogic 8.1
- oracle如何用一条语句删除两个表的内容
- 谁有oracle 10g的jdbc驱动?
- ORACLE 一个字段能存多少字符串?
- 请问如何让一个存储过程在一个特定时间自动执行
- 如何查询重复字段的行?
- 找oracle form builder 内置函数和过程的描述(中文),还有触发器的描述?
- 菜鸟问题,大量的数据中怎么删除表中重复行?
- 请问关于oracle用enterprise manager登录问题
- oracle习题
select 1 id,'aaaaaa' userid,to_date('2010-5-15 10:20:20','yyyy-mm-dd hh24:mi:ss') retime from dual
union all
select 2 id,'bbbbbb' userid,to_date('2010-5-16 10:20:20','yyyy-mm-dd hh24:mi:ss') retime from dual
union all
select 3 id,'cccccc' userid,to_date('2010-5-17 10:20:20','yyyy-mm-dd hh24:mi:ss') retime from dual
union all
select 4 id,'dddddd' userid,to_date('2010-5-18 10:20:20','yyyy-mm-dd hh24:mi:ss') retime from dual
union all
select 5 id,'aaaaaa' userid,to_date('2010-5-18 19:29:55','yyyy-mm-dd hh24:mi:ss') retime from dual
union all
select 6 id,'aaaaaa' userid,to_date('2010-5-18 20:33:42','yyyy-mm-dd hh24:mi:ss') retime from dual
)
select count(id) 回帖总数,count(distinct userid) 回帖用户数 from temp where to_char(retime,'yyyy-mm')='2010-05'
select to_char(回帖时间,'yyyy-mm') 月份,count(1) 每月回帖总数,
count(distinct 回帖用户) 回帖用户数
from tb
--加个where to_char(回帖时间,'yyyy-mm')='2010-05' 就是5月的,不加则是每个月的
group by to_char(回帖时间,'yyyy-mm')
——————————————————————————————现在需要用一条SQL语句统计出 2010年5月份 回帖总数 以及 回帖用户数。条件只给出年份以及月份,都是INT类型的,请问保证效率的情况下SQL语句如何写!
//select count(id) 回帖总数,count(distinct userid) 回帖用户数 from temp where to_char(retime,'yyyy-mm')='2010-05'
根据楼主说的,主要是看重sql效率,条件是整型也没事,就用这个sql可以了。如果觉得效率还是低了,可以写成:
select /*+parallel(a,20)*/count(id) 回帖总数,count(distinct userid) 回帖用户数 from temp a where to_char(retime,'yyyy-mm')='2010-05'