① 求一條sql語句算出每年的周期問題!
-- 這里設置 星期一 為 每周的第一天。
SET DATEFIRST 1
GO
SELECT
YEAR(everyDay) AS [年份],
DATEPART(ww, everyDay) AS [周期],
MIN(everyDay) AS [起始日期],
MAX(everyDay) AS [結束日期]
FROM
(
SELECT
Convert(datetime, '2011-01-01', 120) + number AS everyDay
FROM
master..spt_values
WHERE
type='P'
AND Convert(datetime, '2011-01-01', 120) + number < Convert(datetime, '2012-01-01', 120)
) tempView
GROUP BY
YEAR(everyDay),
DATEPART(ww, everyDay)
GO
年份 周期 起始日期 結束日期
2011 1 2011-01-01 00:00:00.000 2011-01-02 00:00:00.000
2011 2 2011-01-03 00:00:00.000 2011-01-09 00:00:00.000
2011 3 2011-01-10 00:00:00.000 2011-01-16 00:00:00.000
2011 4 2011-01-17 00:00:00.000 2011-01-23 00:00:00.000
2011 5 2011-01-24 00:00:00.000 2011-01-30 00:00:00.000
。。。。。。
② (sql設計)根據日、周、月、季度四個時間周期來統計出商品的銷量,智能分析熱銷、一般、滯銷商品的情況
匯總數據是基於明細交易數據經過計算得到的,你要考慮的是保證明細交易數據表的欄位滿足使用需要,只要明細交易數據表提供足夠多的欄位,要統計什麼樣的數據就寫SQL語句匯總就OK了。
有時也做匯總後結構的數據表,但一般都不放臨近計算的匯總數據,因為剛剛發生的業務有可能會變化。
比如一筆銷售業務賣出去A商品100件,800元。你放到周報表中了,但是過幾天又退回來了,你從匯總表中查有這100個,但是從明細交易表匯總就沒有這100個,造成了數據的不一致,數據不一致對一個管理系統來說是個致命的問題。這里簡單舉個例子。
③ 如何用一段SQL查詢不同時間周期內的賬戶數
查詢前兩列作為主表,關聯三個子查詢,通過部門和代理商left join,查詢欄位即主表欄位+子查詢結果欄位。
④ sql 計算自然月周數按星期來計算,然後統計每周
沒太理解你截圖代碼什麼意思,我下面的例子可以通過輸入年月得到該月份的總周數,使用的資料庫是SQL SERVER 2005
DECLARE@yearint,@monthint,@tempdatadatetime,@sumdaymoney
SELECT@year=2015,@month=11
--先拼接成參數月份的第一天
SELECT@tempdata=convert(varchar(4),@year)+'-'+convert(varchar(2),@month)+'-01'
--統計參數月份總天數
SELECT@sumday=datediff(day,@tempdata,dateadd(month,1,@tempdata))
--計算參數月份一共幾周
SEELCTceiling((@sumday-(casewhendatename(weekday,@tempdata)='星期一'then7.0
whendatename(weekday,@tempdata)='星期二'then6.0
whendatename(weekday,@tempdata)='星期三'then5.0
whendatename(weekday,@tempdata)='星期四'then4.0
whendatename(weekday,@tempdata)='星期五'then3.0
whendatename(weekday,@tempdata)='星期六'then2.0else1.0end))/7.0)+1
⑤ 求統計每周記錄數的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
⑥ 如何寫SQL語句按周統計和按季度統計
--sqlserver2005語法統計按周,月,季,年。
--按日
--selectsum(price),day([date])fromtable_namewhereyear([date])=
'2006'groupbyday([date])
--按周quarter
selectsum(price),datename(week,price_time)fromble_namewhere
year(price_time)='2008'groupbydatename(week,price_time)
--按月
selectsum(price),month(price_time)fromble_namewhereyear(price_time)
='2008'groupbymonth(price_time)
--按季
selectsum(price),datename(quarter,price_time)fromble_namewhere
year(price_time)='2008'groupbydatename(quarter,price_time)
--按年
selectsum(price),year(price_time)fromble_namewhere
year(price_time)>='2008'groupbyyear(price_time)
⑦ sql 按周統計
去企業管理器,到管理裡面看看作業
新建一個作業
在步驟-新建-命令 裡面寫你的sql語句
在調度-新建調度-更改 在裡面選擇每周-周日 時間為23:59:00
其他的地方你自己看看,隨便填
這樣每個星期天的23:59分,資料庫就會自動的執行你寫的那個sql語句
⑧ 求統計每周記錄數的SQL語句
新建一個周信息表,存儲周信息(周號、周開始時間、周結束時間)
你的周是按照自然周,還是按月結的周?自然周就不用說了,正常的周一到周日。按月結的,就是所有的周都落在一個月內,不會存在跨月的情況。比如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)
⑨ sql統計每周日數據
題目沒看懂,提供一些有用的函數
SELECTDATEPART(WEEKDAY,GETDATE())AS'今天是本周第幾天',DATEPART(WEEK,GETDATE())AS'今天在本年第幾周';