`

转载自www.dezai.cn 常用sql统计

阅读更多

1.解决被零除(零做除数时)

--来自百度问吧

在统计系统中,需要求百分数,
如(sum(baseprice)-sum(quote))/sum(baseprice)*100)中,
如果sum(baseprice)为0,系统会报错,不能运行

把sum(baseprice) 改为
nullif(sum(isnull(baseprice,0)),0)
就可以了,除于0会出错,除于null就不会出错了






2.列出某年1-12月数据各产吕的销售数据

Select 产品ID AS 机型, SUM(CASE month(日期) WHEN 1 THEN 销售量 ELSE 0 END)
      AS [一月], SUM(CASE month(日期) WHEN 2 THEN 销售量 ELSE 0 END) AS [二月],
      SUM(CASE month(日期) WHEN 3 THEN 销售量 ELSE 0 END) AS [三月],
      SUM(CASE month(日期) WHEN 4 THEN 销售量 ELSE 0 END) AS [四月],
      SUM(CASE month(日期) WHEN 5 THEN 销售量 ELSE 0 END) AS [五月],
      SUM(CASE month(日期) WHEN 6 THEN 销售量 ELSE 0 END) AS [六月],
      SUM(CASE month(日期) WHEN 7 THEN 销售量 ELSE 0 END) AS [七月],
      SUM(CASE month(日期) WHEN 8 THEN 销售量 ELSE 0 END) AS [八月],
      SUM(CASE month(日期) WHEN 9 THEN 销售量 ELSE 0 END) AS [九月],
      SUM(CASE month(日期) WHEN 10 THEN 销售量 ELSE 0 END) AS [十月],
      SUM(CASE month(日期) WHEN 11 THEN 销售量 ELSE 0 END) AS [十一月],
      SUM(CASE month(日期) WHEN 12 THEN 销售量 ELSE 0 END) AS [十二月]
FROM DezaiCN_Sale
Where datepart(year, 日期) = 2008
GROUP BY 产品ID







3.数据同比 环比分析
(参考邹捷的SQL)

程序代码 程序代码


Create procedure DezaiCn_SaleAnalysisCompareByDate
  @compareMonth int
as

    

    
  --统计处理  
  declare   @o_dt1   datetime,@o_dt2   datetime,  
  @n_dt1   datetime,@beginStasticDate   datetime,@endStasticDate   datetime  
  --计算各期的统计时间  
  select  
  @beginStasticDate=cast(@compareMonth*100+1   as   char(8)),     --本期统计的开始日期  
  @endStasticDate=dateadd(month,1,@beginStasticDate),                 --本期统计的结束日期  
  @n_dt1=dateadd(month,-1,@beginStasticDate),               --上期统计的开始日期  
  @o_dt1=dateadd(year,-1,@beginStasticDate),                 --去年同期统计的开始日期  
  @o_dt2=dateadd(month,1,@o_dt1)                   --去年同期统计的结束日期  
    
  select  
店铺名=isnull(a.店铺名,b.店铺名),

本期开始=CONVERT(varchar(12) , @beginStasticDate, 102 ),

本期结束=CONVERT(varchar(12) , @endStasticDate, 102 ),

上期结束=CONVERT(varchar(12) , @n_dt1, 102 ),

  本期=isnull(b.销售量2,0),

上期=isnull(b.销售量1,0),  
  上期差异=isnull(b.销售量2,0)-isnull(b.销售量1,0)  ,
去年开始=CONVERT(varchar(12) , @o_dt1, 102 ),

去年结束=CONVERT(varchar(12) , @o_dt2, 102 ),

去年同期=isnull(a.销售量,0),        

去年同期差异=isnull(b.销售量2,0)-isnull(a.销售量,0)


  from(  
  --去年同期的统计  
  select   店铺名,销售量=sum(销售量)  
  from   DezaiCn_Sale  
  where   日期   between   @o_dt1   and   @o_dt2
  group   by   店铺名  
  )a   full   join(  
  --今年及上期统计  
  select   店铺名,  
  销售量1=sum(case   when   日期<@beginStasticDate   then    销售量   end),  
  销售量2=sum(case   when   日期>@beginStasticDate   then   销售量   end)  
  from   DezaiCn_Sale  
  where   日期   between   @n_dt1   and   @endStasticDate    
  group   by   店铺名,店铺名  
  )b   on   a.店铺名=b.店铺名

GO



执行

程序代码 程序代码

DECLARE @RC int
DECLARE @compareMonth int
Select @compareMonth = 200903
EXEC @RC = [TEST].[dbo].[DezaiCn_SaleAnalysisCompareByDate] @compareMonth
DECLARE @PrnLine nvarchar(4000)
PRINT '存储过程: TEST.dbo.DezaiCn_SaleAnalysisCompareByDate'
Select @PrnLine = '    返回代码 = ' + CONVERT(nvarchar, @RC)
PRINT @PrnLine





分享到:
评论

相关推荐

    ASP.Net学习之常用模块整理

    ### ASP.Net学习之常用模块整理 #### 一、前言 在进行ASP.NET项目的开发过程中,我们会遇到各种各样的功能需求和技术挑战。每一次项目实践都是一次宝贵的学习经历,不仅能够提升我们的技术能力,还能帮助我们积累...

    c#开发经验

    Database=dezai;UserID=sa;" /&gt; ``` - **引用必要的命名空间**:为了能够使用 SQL Server 相关的对象(如 `SqlConnection`),需要在代码文件的开头处引入相应的命名空间: ```csharp using System.Data....

    飞浪网第二版源代码

    2. **数据库设计**:源代码可能包含了数据库的连接和查询,这通常涉及到SQL语言。通过分析数据库相关的代码,我们可以了解网站的数据模型、表结构以及数据间的关联。 3. **用户认证与权限管理**:描述中提到了...

    Web技术电子期刊2008年第4. 5期(总第24期)

    【压缩包子文件的文件名称】"DezaiStudioEmagazineNo24IE7.exe"揭示了期刊的提供者是"Dezai Studio",并且这个电子期刊是针对Internet Explorer 7(简称IE7)设计的。这可能意味着期刊包含了与IE7兼容性相关的Web...

    j2se教程 ppt

    9. 集合接口:ArrayList、LinkedList、HashSet、HashMap等常用集合类的使用。 10. 泛型:理解泛型的概念,使用泛型来编写类型安全的代码。 11. Map接口:理解键值对存储,并掌握HashMap、TreeMap等Map实现的特性和...

    纯java代码QQ

    比如,数据加密、防止SQL注入等,可以使用Java的加密库如Java Cryptography Extension (JCE)。 9. **事件驱动编程**:在用户界面中,需要响应用户的操作,如点击按钮、输入文字等,这需要理解事件监听和处理机制。 ...

    java开发技术大全

    《Java开发技术大全》以J2SE为平台全面介绍了Java的基础知识和常用技术。《Java开发技术大全》共分为8篇,首先讲述了Java的基础语法,然后介绍了Java中类和对象的实现,这也是Java的核心所在。随后介绍了Java中的...

    lumaqq代码

    《深入剖析LumaQQ源码:Java编程的学习宝典》 LumaQQ,作为一个开源的QQ客户端项目,为Java编程爱好者提供了一个极佳的学习平台。它不仅展现了QQ客户端的实现原理,同时也展示了Java编程在实际应用中的强大能力。...

Global site tag (gtag.js) - Google Analytics