永发信息网

求统计每周记录数的SQL语句

答案:6  悬赏:30  手机版
解决时间 2021-01-21 00:06
求统计每周记录数的SQL语句
最佳答案
declare @weeknum int,@year int,@month int;--这里是周数、年、月
declare @weekday int,@starttime datetime,@endtime datetime,@timechar varchar(20);--星期几、一周开始、一周结束、当月第一天字符串
declare @datepart int;--需要查询的周首天与月首天的时间差
--赋值2010年3月 第5周
select @year=2010,@month=3,@weeknum=5;
set @timechar=cast(@year as varchar)+'-'+cast(@month as varchar)+'-1'
--拼接出这个月的第一天
select @timechar

select @weekday=datepart(weekday,@timechar)

set @datepart=(@weeknum-2)*7+(8-@weekday)

select @starttime=dateadd(dd,@datepart,@timechar)
select @endtime=dateadd(dd,7,@starttime)

--消除到上个月 及 下个月的出入部分
if (@starttime<@timechar)
set @starttime=@timechar
if (@endtime>dateadd(mm,1,@timechar))
set @endtime=dateadd(mm,1,@timechar)
select @weeknum,@starttime,@endtime

--然后就是使用@starttime,@endtime
select count(*) from tb where 时间>=@starttime and 时间<@endtime
全部回答
新建一个周信息表,存储周信息(周号、周开始时间、周结束时间)
你的周是按照自然周,还是按月结的周?自然周就不用说了,正常的周一到周日。按月结的,就是所有的周都落在一个月内,不会存在跨月的情况。比如2010年1月第一周就是 2010年1月1日到2010年1月9日,这样一周可能大于七天,也可能小于7天。
按照自然周的给你个方法:
create table bga050t (weak_no varchar(10),
strt_dt datetime,
end_dt datetime
CONSTRAINT [PK_bga050t] PRIMARY KEY CLUSTERED
(
[weak_no]
) ON [PRIMARY]
)
declare @weak_no varchar(18)
declare @strt_dt datetime
declare @end_dt datetime
declare @n int
set @n=1
set @strt_dt = '2007-12-31'
set @weak_no = ''
WHILE(@strt_dt < '2021-01-04')
BEGIN
IF @weak_no<>left(convert(varchar(10),@strt_dt,120),8)
BEGIN
set @weak_no=left(convert(varchar(10),@strt_dt,120),8)
set @n=1
end
set @end_dt= dateadd(d,6,@strt_dt)
insert into bga050t (weak_no,strt_dt,end_dt)
values(@weak_no+convert(varchar,@n),@strt_dt,@end_dt)
set @n=@n+1
set @strt_dt=dateadd(d,1,@end_dt)
END
你要查询年月周只需要把周号分解就可以了。
select a.* from 表 inner join
bga050t b on a.dt between b.strt_dt and b.end_dt
where left(b.weak_no,7)='2009-02' and [周数] = right(b.weak_no,1)
DECLARE @dYear VARCHAr(4)
DECLARE @dMonth VARCHAr(2)
DECLARE @dDate VARCHAr(10)
DECLARE @dBDate VARCHAr(10)
DECLARE @dEDate VARCHAr(10)
DECLARE @N INT
SET @dYear = '2010'
SET @dMonth = '02'
SET @N = 1
SET @dDate = @dYear + '-' + @dMonth + '-01' --某个月的第一天
SELECt @dBDate = DATEADD(DAY,1 - DATEPART(dw,@dDate) + (@N-1)*7,@dDate) --获取第N周的第一天
SELECT @dEDate = DATEADD(DAY,1 - DATEPART(dw,@dDate) + (@N)*7,@dDate) --获取第N周的最后一天
-- 以上是获取某年、某月、某周的第一天及最后一天
要实现你的功能,就是通过传递参数(年,月,周)
然后执行下列语句:
select count(1) from 表 where dDate between @dBDate and @dEDate
你的周数是怎么算的?
select date_col,
to_number(to_char(trunc(sysdate, 'yyyy'), 'd')) year_week_day,
first_day_week,
week_no,
week_no - first_day_week + 1 week_no
from (select date_col,
to_number(to_char(trunc(sysdate, 'mm') + 7 - 1, 'ww')) first_day_week,
to_number(to_char(date_col + 7 - 1, 'ww')) week_no
from (select trunc(sysdate, 'mm') + rownum - 1 date_col
from dba_objects
where rownum <= to_number(to_char(last_day(sysdate), 'dd'))))
执行后,参考。
是指那一周一共有多少条记录的话
表应该有id吧
select count(id) from 表名 between 起始日期 and 最终日期
是这个意思么....
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
bedroom怎么读
梦见身后又好多蛇,在后面贴着
U盘插入电脑USB接口后,发热很烫,怎么回事?
为了探究声音在不同介质中传播的快慢,小莉和
有请高人解观音灵签,谢谢!
征集“我心中的中国传统节日”活动方案
设立三江源自然保护区重点保护的野生动物是A.
华沃E580无线上网卡驱动安装问题,高手帮我解
夫子的解释是什么
但当有人问自己怎么了,却回复一句“没什么”
求问,美版KPW3在中国用和国行有什么不同吗
白蛤里的沙子怎样才能让它快点吐干净?
2∧2+2∧3+2∧4+……+2∧n=?
瑞安商城到林洋多少公里
新乐府 汉乐府 汉乐府旧题三者的区别
推荐资讯
请问大家咱渭南周边农村哪有卖土鸡和土鸡蛋的
火线手游麒麟刺好吗 穿越火线手游麒麟刺有什
肉牛浓缩料配多少玉米
a是什么实数时,根号下2a-1的完全平方等于1-2a
金刚石有导电性吗?
Diy手工暖场活动做得行点的公司都有哪些?在
请懂陶瓷的行家看看这是什么年代的?值得收藏
义牒镇派出所地址在什么地方,我要处理点事!
平安保险 给0岁宝宝该不该入 懂行的帮我分
英大证券的分支机构
急求<<后汉书志第十九郡国>>中的一段文字的翻
cache-cache这个牌子怎么读?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?