sql 查询一段时间内 每一天的统计数据

sql 查询一段时间内 每一天的统计数据,第1张

select xxtime as "时间",count(id) as "条数" from record xx where xxtime between '2014-09-01' and '2014-10-01' group by xxtime;

select userrealname, count(newsid) from userid = newsadduserid where addtime > '2009-0-01' and addtiem < '2009-12-31' group by userid,userrealname addtime如果是日期的话,你自己改一下用法即可

这种情况下,你需要特殊处理下出差日期和回日期。我简单写了一下,你参考下。

with t as (

select 'a' name, '2014-6-20' go_date, '2014-6-30' end_date, 11 totalday from dual

union all

select 'a' name, '2014-5-28' go_date, '2014-6-3' end_date, 6 totalday from dual

union all

select 'a' name, '2014-6-28' go_date, '2014-7-3' end_date, 6 totalday from dual

union all

select 'a' name, '2014-5-29' go_date, '2014-7-2' end_date, 4 totalday from dual

union all

select 'b' name, '2014-5-29' go_date, '2014-7-2' end_date, 34 totalday from dual)

select name, sum(edate-gdate+1) from

(select name, case when to_date(go_date, 'yyyy-mm-dd') < to_date('2014-6-1', 'yyyy-mm-dd') then to_date('2014-6-1', 'yyyy-mm-dd')

else to_date(go_date, 'yyyy-mm-dd') end gdate,

case when to_date(end_date, 'yyyy-mm-dd') > to_date('2014-6-30', 'yyyy-mm-dd') then to_date('2014-6-30', 'yyyy-mm-dd')

else to_date(end_date, 'yyyy-mm-dd') end edate

from t)

group by name;

Calendar nowDate=new GregorianCalendar();

Calendar startDate=new GregorianCalendar();

if("0"equals(value)) startDateadd(CalendarWEEK_OF_YEAR,-1);//考虑到跨年的问题,最好用CalendarDATE,-7)

if("1"equals(value)) startDateadd(CalendarMONTH,-1);

if("2"equals(value)) startDateadd(CalendarMONTH,-3);

if("3"equals(value)) startDateadd(CalendarYEAR,-1);

将startDate和nowDate格式化成你数据库相应的时间格式

根据你数据库的时间字段查询时间大于startDate小于nowDate 可得到结果

根据时间的话要用datediff()函数

select sum(任何一个数值字段) from [表1] where datediff(month, "2009-3-7",日期)=0

函数中第一个参数是时间比较的单位,可以是year,month, day等,第一个参数是开始时间,第二个参数是结束时间,结果就是开始时间与结束时间的差值

如果想按你的方法的话

string sql1 = "select sum(收入金额) from [真实财产] WHERE (((Year([日期]))="+str1+") AND ((Month([日期]))="+str2+"))"; 其中参数要使用字符串连接的形式传入

思路:先建一个中间表 sys_date(s_date var(8))

接着,把每天数据插入。

最后进行关联查询。

查询实例:

SELECT nvl(CONVERT(VARCHAR(20), TIME, 112),0), COUNT(IP)

FROM WEB_USER join sys_date on CONVERT(VARCHAR(20), TIME, 112)=sys_dates_date

where sys_dates_date >='20100101'

and sys_dates_date <='20100131'

GROUP BY CONVERT(VARCHAR(20), TIME, 112)

ORDER BY CONVERT(VARCHAR(20), TIME, 112)

以上就是关于sql 查询一段时间内 每一天的统计数据全部的内容,包括:sql 查询一段时间内 每一天的统计数据、SQL 查询按时间统计记录条数的问题、oracle关于数据库 时间统计的查询问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存