SQL怎么按照日、周、月、年对数据进行统计
本篇内容介绍了“SQL怎么按照日、周、月、年对数据进行统计”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
--按日 select sum(consume),day([date]) from consume_record where year([date]) = '2006' group by day([date])
--按周quarter select sum(consume),datename(week,[date]) from consume_record where year([date]) = '2006' group by datename(week,[date])
--按月 select sum(consume),month([date]) from consume_record where year([date]) = '2006' group by month([date])
--按季 select sum(consume),datename(quarter,[date]) from consume_record where year([date]) = '2006' group by datename(quarter,[date])
--按年select sum(consume),year([date]) from consume_record where group by year([date])
DATE_FORMAT
selectDATE_FORMAT(create_time,'%Y%u')weeks,count(caseid)countfromtc_casegroupbyweeks;selectDATE_FORMAT(create_time,'%Y%m%d')days,count(caseid)countfromtc_casegroupbydays;selectDATE_FORMAT(create_time,'%Y%m')months,count(caseid)countfromtc_casegroupbymonths;
DATE_FORMAT(date,format) 根据format字符串格式化date值。下列修饰符可以被用在format字符串中: %M 月名字(January……December) %W 星期名字(Sunday……Saturday) %D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。) %Y 年, 数字, 4 位 %y 年, 数字, 2 位 %a 缩写的星期名字(Sun……Sat) %d 月份中的天数, 数字(00……31) %e 月份中的天数, 数字(0……31) %m 月, 数字(01……12) %c 月, 数字(1……12) %b 缩写的月份名字(Jan……Dec) %j 一年中的天数(001……366) %H 小时(00……23) %k 小时(0……23) %h 小时(01……12) %I 小时(01……12) %l 小时(1……12) %i 分钟, 数字(00……59) %r 时间,12 小时(hh:mm:ss [AP]M) %T 时间,24 小时(hh:mm:ss) %S 秒(00……59) %s 秒(00……59) %p AM或PM %w 一个星期中的天数(0=Sunday ……6=Saturday ) %U 星期(0……52), 这里星期天是星期的第一天 %u 星期(0……52), 这里星期一是星期的第一天 %% 一个文字“%”。
本文只是记录在项目中用到的统计的SQL语句,记一笔以防忘了
///<summary>///获取统计数据///</summary>///<paramname="CKEY">店面ckey</param>///<paramname="type">统计类型(日、周、月、年)</param>///<returns></returns>[WebMethod(true)]publicstaticstringGetData3(stringCKEY,stringtype){StringBuilderstrSql=newStringBuilder();#regionSQL语句if(type=="0"){#region日strSql.AppendFormat("WITHWeekDate");strSql.AppendFormat("AS(SELECTDATEADD(d,-DAY(GETDATE())+1,GETDATE())ASriqi");strSql.AppendFormat("UNIONALL");strSql.AppendFormat("SELECTriqi+1FROMWeekDate");strSql.AppendFormat("WHEREriqi+1<=(SELECTDATEADD(d,-DAY(GETDATE()),DATEADD(m,1,GETDATE())))");strSql.AppendFormat(")");strSql.AppendFormat("SELECTCONVERT(CHAR(8),a.riqi,112)AS日,DAY(CONVERT(CHAR(8),a.riqi,112))ASDDay,");strSql.AppendFormat("ISNULL(tbB.日成交量,0)AS日成交量,");strSql.AppendFormat("CASEWHENCONVERT(CHAR(8),a.riqi,112)>CONVERT(CHAR(8),GETDATE(),112)");strSql.AppendFormat("THENNULL");strSql.AppendFormat("WHENCONVERT(CHAR(8),a.riqi,112)<=CONVERT(CHAR(8),GETDATE(),112)");strSql.AppendFormat("THENISNULL(tbB.日成交量,0)");strSql.AppendFormat("ENDAS日成交数量,");strSql.AppendFormat("tbB.日实收金额,");strSql.AppendFormat("CASEWHENCONVERT(CHAR(8),a.riqi,112)>CONVERT(CHAR(8),GETDATE(),112)");strSql.AppendFormat("THENNULL");strSql.AppendFormat("WHENCONVERT(CHAR(8),a.riqi,112)<=CONVERT(CHAR(8),GETDATE(),112)");strSql.AppendFormat("THENISNULL(tbB.日实收金额,0)");strSql.AppendFormat("ENDAS日实收金额2");strSql.AppendFormat("FROMWeekDatea");strSql.AppendFormat("LEFTJOIN(SELECT(SELECTCOUNT(1)");strSql.AppendFormat("FROMdbo.CustomerBasebase");strSql.AppendFormat("WHERECKEY='{0}'",CKEY);strSql.AppendFormat("AND"+impomo.TotalConsumptionMon+">0");strSql.AppendFormat("ANDTargetDate=cus.TargetDate");strSql.AppendFormat(")日成交量,");strSql.AppendFormat("ISNULL((SELECTSUM(Total)");strSql.AppendFormat("FROM(SELECTSUM(CONVERT(FLOAT,ISNULL((pc1+pc2+pc3+pc4+pc5),0)))ASTotal");strSql.AppendFormat("FROMPaymentContentASpay");strSql.AppendFormat("WHEREPayDate=cus.TargetDate");strSql.AppendFormat("ANDpay.CKEY='{0}'",CKEY);strSql.AppendFormat("UNIONALL");strSql.AppendFormat("SELECTSUM(CONVERT(FLOAT,ISNULL(RecMoney,0)))ASTotal");strSql.AppendFormat("FROMdbo.CardRecharge8ASrecharge");strSql.AppendFormat("WHERERechargDate=cus.TargetDate");strSql.AppendFormat("ANDrecharge.CKEY='{0}'",CKEY);strSql.AppendFormat("UNIONALL");strSql.AppendFormat("SELECTSUM(CONVERT(FLOAT,ISNULL((pc1+pc2+pc3+pc4+pc5),0)))ASTotal");strSql.AppendFormat("FROMdbo.PaymentSwimmingASpayswim");strSql.AppendFormat("WHEREPayDate=cus.TargetDate");strSql.AppendFormat("ANDpayswim.CKEY='{0}'",CKEY);strSql.AppendFormat("UNIONALL");strSql.AppendFormat("SELECTSUM(CONVERT(FLOAT,ISNULL((wp1+wp2+wp3+wp4+wp5),0)))ASTotal");strSql.AppendFormat("FROMWarePaymentContentASware");strSql.AppendFormat("WHEREPayDate=cus.TargetDate");strSql.AppendFormat("ANDware.CKEY='{0}'",CKEY);strSql.AppendFormat(")B");strSql.AppendFormat("),0)AS日实收金额,");strSql.AppendFormat("TargetDate日");strSql.AppendFormat("FROMdbo.CustomerBasecus");strSql.AppendFormat("WHEREYEAR(TargetDate)=YEAR(GETDATE())");strSql.AppendFormat("ANDMONTH(TargetDate)=MONTH(GETDATE())");strSql.AppendFormat("GROUPBYTargetDate");strSql.AppendFormat(")AStbBONCONVERT(CHAR(8),a.riqi,112)=tbB.日");#endregion}elseif(type=="1"){#region周strSql.AppendFormat("WITHWeekDate");strSql.AppendFormat("AS(SELECTDATEADD(wk,DATEDIFF(wk,0,GETDATE()),0)ASriqi");strSql.AppendFormat("UNIONALL");strSql.AppendFormat("SELECTriqi+1FROMWeekDate");strSql.AppendFormat("WHEREriqi+1<=(SELECTDATEADD(wk,DATEDIFF(wk,0,GETDATE()),6))");strSql.AppendFormat(")");strSql.AppendFormat("SELECTCONVERT(CHAR(8),a.riqi,112)AS日,");strSql.AppendFormat("DATENAME(weekday,CONVERT(CHAR(8),a.riqi,112))DDay,");strSql.AppendFormat("ISNULL(tbB.日成交量,0)AS日成交量,");strSql.AppendFormat("CASEWHENCONVERT(CHAR(8),a.riqi,112)>CONVERT(CHAR(8),GETDATE(),112)");strSql.AppendFormat("THENNULL");strSql.AppendFormat("WHENCONVERT(CHAR(8),a.riqi,112)<=CONVERT(CHAR(8),GETDATE(),112)");strSql.AppendFormat("THENISNULL(tbB.日成交量,0)");strSql.AppendFormat("ENDAS日成交数量,");strSql.AppendFormat("tbB.日实收金额,");strSql.AppendFormat("CASEWHENCONVERT(CHAR(8),a.riqi,112)>CONVERT(CHAR(8),GETDATE(),112)");strSql.AppendFormat("THENNULL");strSql.AppendFormat("WHENCONVERT(CHAR(8),a.riqi,112)<=CONVERT(CHAR(8),GETDATE(),112)");strSql.AppendFormat("THENISNULL(tbB.日实收金额,0)");strSql.AppendFormat("ENDAS日实收金额2");strSql.AppendFormat("FROMWeekDatea");strSql.AppendFormat("LEFTJOIN(SELECT(SELECTCOUNT(1)");strSql.AppendFormat("FROMdbo.CustomerBasebase");strSql.AppendFormat("WHERECKEY='{0}'",CKEY);strSql.AppendFormat("AND"+impomo.TotalConsumptionMon+">0");strSql.AppendFormat("ANDTargetDate=cus.TargetDate");strSql.AppendFormat(")日成交量,");strSql.AppendFormat("ISNULL((SELECTSUM(Total)");strSql.AppendFormat("FROM(SELECTSUM(CONVERT(FLOAT,ISNULL((pc1+pc2+pc3+pc4+pc5),0)))ASTotal");strSql.AppendFormat("FROMPaymentContentASpay");strSql.AppendFormat("WHEREPayDate=cus.TargetDate");strSql.AppendFormat("ANDpay.CKEY='{0}'",CKEY);strSql.AppendFormat("UNIONALL");strSql.AppendFormat("SELECTSUM(CONVERT(FLOAT,ISNULL(RecMoney,0)))ASTotal");strSql.AppendFormat("FROMdbo.CardRecharge8ASrecharge");strSql.AppendFormat("WHERERechargDate=cus.TargetDate");strSql.AppendFormat("ANDrecharge.CKEY='{0}'",CKEY);strSql.AppendFormat("UNIONALL");strSql.AppendFormat("SELECTSUM(CONVERT(FLOAT,ISNULL((pc1+pc2+pc3+pc4+pc5),0)))ASTotal");strSql.AppendFormat("FROMdbo.PaymentSwimmingASpayswim");strSql.AppendFormat("WHEREPayDate=cus.TargetDate");strSql.AppendFormat("ANDpayswim.CKEY='{0}'",CKEY);strSql.AppendFormat("UNIONALL");strSql.AppendFormat("SELECTSUM(CONVERT(FLOAT,ISNULL((wp1+wp2+wp3+wp4+wp5),0)))ASTotal");strSql.AppendFormat("FROMWarePaymentContentASware");strSql.AppendFormat("WHEREPayDate=cus.TargetDate");strSql.AppendFormat("ANDware.CKEY='{0}'",CKEY);strSql.AppendFormat(")B");strSql.AppendFormat("),0)AS日实收金额,");strSql.AppendFormat("TargetDate日");strSql.AppendFormat("FROMdbo.CustomerBasecus");strSql.AppendFormat("WHEREDATEPART(wk,TargetDate)=DATEPART(wk,GETDATE())");strSql.AppendFormat("ANDDATEPART(yy,TargetDate)=DATEPART(yy,GETDATE())");strSql.AppendFormat("GROUPBYTargetDate");strSql.AppendFormat(")AStbBONCONVERT(CHAR(8),a.riqi,112)=tbB.日");#endregion}elseif(type=="2"){#region月strSql.AppendFormat("SELECTYearMonth.月,");strSql.AppendFormat("tb.月成交量,");strSql.AppendFormat("CASEWHENYearMonth.月>MONTH(GETDATE())THENNULL");strSql.AppendFormat("WHENYearMonth.月<=MONTH(GETDATE())THENISNULL(tb.月成交量,0)");strSql.AppendFormat("ENDAS月成交数量,");strSql.AppendFormat("tb.月实收总金额,");strSql.AppendFormat("CASEWHENYearMonth.月>MONTH(GETDATE())THENNULL");strSql.AppendFormat("WHENYearMonth.月<=MONTH(GETDATE())THENISNULL(tb.月实收总金额,0)");strSql.AppendFormat("ENDAS月实收总金额2");strSql.AppendFormat("FROM(SELECT1AS月UNIONSELECT2UNIONSELECT3UNIONSELECT4UNIONSELECT5UNIONSELECT6");strSql.AppendFormat("UNIONSELECT7UNIONSELECT8UNIONSELECT9UNIONSELECT10UNIONSELECT11UNIONSELECT12");strSql.AppendFormat(")ASYearMonth");strSql.AppendFormat("LEFTJOIN(SELECT(SELECTCOUNT(1)");strSql.AppendFormat("FROMdbo.CustomerBasebase");strSql.AppendFormat("WHERECKEY='{0}'",CKEY);strSql.AppendFormat("AND"+impomo.TotalConsumptionMon+">0");strSql.AppendFormat("ANDMONTH(TargetDate)=MONTH(cus.TargetDate)");strSql.AppendFormat(")月成交量,");strSql.AppendFormat("ISNULL((SELECTSUM(Total)");strSql.AppendFormat("FROM(SELECTSUM(CONVERT(FLOAT,ISNULL((pc1+pc2+pc3+pc4+pc5),0)))ASTotal");strSql.AppendFormat("FROMPaymentContentASpay");strSql.AppendFormat("WHEREMONTH(PayDate)=MONTH(cus.TargetDate)");strSql.AppendFormat("ANDpay.CKEY='{0}'",CKEY);strSql.AppendFormat("UNIONALL");strSql.AppendFormat("SELECTSUM(CONVERT(FLOAT,ISNULL(RecMoney,0)))ASTotal");strSql.AppendFormat("FROMdbo.CardRecharge8ASrecharge");strSql.AppendFormat("WHEREMONTH(RechargDate)=MONTH(cus.TargetDate)");strSql.AppendFormat("ANDrecharge.CKEY='{0}'",CKEY);strSql.AppendFormat("UNIONALL");strSql.AppendFormat("SELECTSUM(CONVERT(FLOAT,ISNULL((pc1+pc2+pc3+pc4+pc5),0)))ASTotal");strSql.AppendFormat("FROMdbo.PaymentSwimmingASpayswim");strSql.AppendFormat("WHEREMONTH(PayDate)=MONTH(cus.TargetDate)");strSql.AppendFormat("ANDpayswim.CKEY='{0}'",CKEY);strSql.AppendFormat("UNIONALL");strSql.AppendFormat("SELECTSUM(CONVERT(FLOAT,ISNULL((wp1+wp2+wp3+wp4+wp5),0)))ASTotal");strSql.AppendFormat("FROMWarePaymentContentASware");strSql.AppendFormat("WHEREMONTH(PayDate)=MONTH(cus.TargetDate)");strSql.AppendFormat("ANDware.CKEY='{0}'",CKEY);strSql.AppendFormat(")B");strSql.AppendFormat("),0)AS月实收总金额,");strSql.AppendFormat("MONTH(TargetDate)月");strSql.AppendFormat("FROMdbo.CustomerBasecus");strSql.AppendFormat("WHEREYEAR(TargetDate)=YEAR(GETDATE())");strSql.AppendFormat("GROUPBYMONTH(cus.TargetDate)");strSql.AppendFormat(")AStbONYearMonth.月=tb.月");#endregion}elseif(type=="3"){#region年strSql.AppendFormat("SELECT(SELECTCOUNT(1)");strSql.AppendFormat("FROMdbo.CustomerBasebase");strSql.AppendFormat("WHERECKEY='{0}'",CKEY);strSql.AppendFormat("AND"+impomo.TotalConsumptionMon+">0");strSql.AppendFormat("ANDYEAR(TargetDate)=YEAR(cus.TargetDate)");strSql.AppendFormat(")年成交量,");strSql.AppendFormat("CONVERT(NVARCHAR(20),CONVERT(DECIMAL(18,2),ISNULL((SELECTSUM(Total)");strSql.AppendFormat("FROM(SELECTSUM(CONVERT(FLOAT,ISNULL((pc1+pc2+pc3+pc4+pc5),0)))ASTotal");strSql.AppendFormat("FROMPaymentContentASpay");strSql.AppendFormat("WHEREYEAR(PayDate)=YEAR(cus.TargetDate)");strSql.AppendFormat("ANDpay.CKEY='{0}'",CKEY);strSql.AppendFormat("UNIONALL");strSql.AppendFormat("SELECTSUM(CONVERT(FLOAT,ISNULL(RecMoney,0)))ASTotal");strSql.AppendFormat("FROMdbo.CardRecharge8ASrecharge");strSql.AppendFormat("WHEREYEAR(RechargDate)=YEAR(cus.TargetDate)");strSql.AppendFormat("ANDrecharge.CKEY='{0}'",CKEY);strSql.AppendFormat("UNIONALL");strSql.AppendFormat("SELECTSUM(CONVERT(FLOAT,ISNULL((pc1+pc2+pc3+pc4+pc5),0)))ASTotal");strSql.AppendFormat("FROMdbo.PaymentSwimmingASpayswim");strSql.AppendFormat("WHEREYEAR(PayDate)=YEAR(cus.TargetDate)");strSql.AppendFormat("ANDpayswim.CKEY='{0}'",CKEY);strSql.AppendFormat("UNIONALL");strSql.AppendFormat("SELECTSUM(CONVERT(FLOAT,ISNULL((wp1+wp2+wp3+wp4+wp5),0)))ASTotal");strSql.AppendFormat("FROMWarePaymentContentASware");strSql.AppendFormat("WHEREYEAR(PayDate)=YEAR(cus.TargetDate)");strSql.AppendFormat("ANDware.CKEY='{0}'",CKEY);strSql.AppendFormat(")B");strSql.AppendFormat("),0)))AS年实收总金额,");strSql.AppendFormat("YEAR(TargetDate)年");strSql.AppendFormat("FROMdbo.CustomerBasecus");strSql.AppendFormat("GROUPBYYEAR(TargetDate)");#endregion}#endregionDataTabletable=DBHelper.GetDateTable(strSql.ToString());stringrs=Newtonsoft.Json.JsonConvert.SerializeObject(table);returnrs;}
“SQL怎么按照日、周、月、年对数据进行统计”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。