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

另见:http://blog.csdn.net/eastjazz/archive/2009/03/18/4001420.aspx

常用的数据库统计SQL语句相关推荐

  1. 常用的数据库统计SQL语句(2)

    1.解决被零除(零做除数时) --来自百度问吧 在统计系统中,需要求百分数, 如(sum(baseprice)-sum(quote))/sum(baseprice)*100)中, 如果sum(base ...

  2. MySQL数据库:SQL语句

    MySql数据库系列阅读 MySQL数据库 MySQL数据库:SQL语句 MySQL数据库:完整性约束 MySQL数据库备份与还原 MySQL数据库:编码 1. SQL概述 1.1 什么是SQL SQ ...

  3. JavaWeb学习笔记(数据库、SQL语句、数据查询语法、完整性约束、编码、备份和恢复数据、多表查询)

    数据库.SQL语句.数据查询语法.完整性约束.编码.备份和恢复数据.多表查询 JavaWeb学习笔记 数据库 数据库概念 基本命令 启动和关闭mysql服务器 客户端登录退出mysql SQL语句 S ...

  4. [数据库]简单SQL语句总结

    1.在查询结果中显示列名: a.用as关键字:select name as '姓名'   from students order by age b.直接表示:select name '姓名'   fr ...

  5. 总结一些关于操作数据库是sql语句还是存储过程问题

    总结一些关于操作数据库是sql语句还是存储过程问题 程序中,你跟数据的交互,需要向数据库拿数据.更改数据库的数据等,这些操作,本身不是程序完成的,而是程序发命令给数据库去做的,不管是通过sql语句方式 ...

  6. Oracle学习总结(7)—— 常用的数据库索引优化语句总结

    不管是用C/C++/Java等代码编写的程序,还是SQL编写的数据库脚本,都存在一个持续优化的过程.也就是说,代码优化对于程序员来说,是一个永恒的话题. 近期,我们对之前编写的数据库脚本进行了全面的自 ...

  7. 1.MySQL数据库 2.SQL语句

    01数据库概念 * A: 什么是数据库数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作. * B: 什么是数据库 ...

  8. MySQL数据库的SQL语句

    MySQL数据库的SQL语句 MySQL的常用数据类型 MySQL数据类型及含义 char与varchar的区别 MySQL的基本命令 登录数据库 查看MySQL数据库版本 查看当前服务器中的数据库 ...

  9. 如何查看目前所有会话的状态oracle,Oracle一些常用查看数据库状态SQL

    Oracle一些常用查看数据库状态SQL --查看当前连接客户端使用连接数 select   machine, count(machine)  from   sys.v_$session group ...

最新文章

  1. 做事情的价值和看待方式
  2. 20155317 2016-2017-2 《Java程序设计》第十学习总结
  3. VS2015升级Update2之后Cordova程序提示:此应用程序无法在此电脑上运行
  4. c matlab.h,用matlab和c写程序,include的mex.h在哪里?
  5. JS-图片其他事件-Event对象-事件委托-DOM对象
  6. Linux 进程信号详细总结
  7. 微软发布 VS Code Jupyter 插件!不止 Python,多语言的 Jupyter Notebook支持来了!
  8. Spring Autowiring @Qualifier example
  9. 【读书笔记】A Swift Tour
  10. 发卡网shell漏洞_Apache Tomcat文件包含漏洞(CVE-2020-1938)复现
  11. .bat脚本基本命令合集
  12. win10系统更新时一直停留在重新启动界面的解决方法
  13. 支持Linux系统双网卡ARM平台AM3352/AM3354
  14. [渝粤教育] 无锡商业职业技术学院 商务礼仪 参考 资料
  15. 考研英语近义词与反义词·四
  16. python列表的操作
  17. python计算日期是一年中的第几天,Python根据年月日,计算是一年的第几天
  18. 【OpenGL 学习笔记】第 4 篇:绘制四边形
  19. js密码生成器小工具
  20. 网页加载,只显示文字,不显示图片。(原因解决方法)

热门文章

  1. 手机电子邮件设置exchange方式登录163邮箱
  2. iimap服务器没有响应,解决imap被vimIM和谐掉的问题
  3. SAP-PM设备模块-维修执行-维修工单
  4. the page has expired due to inactivity. please refresh and try again
  5. 深度学习中需要的矩阵计算
  6. iOS searchbar实现汉字更具拼音首字母排序
  7. JavaScript 实现汉字按拼音首字母分组拼序
  8. JAVA编写元音字母(Switch语句)
  9. 区块链行业领袖汇聚一堂,共同畅谈IEO
  10. 如何在线批量进行PDF拆分