最近刚在搞一个BI的项目,里面需要大量的sql 数据统计相关运用,加深了我又对SQL的理解与使用。

所以,分享几个数据统计时常用的sql 语句总结:

1. 统计各个条件下的数据

select
BatchId,sum(CardSum) 总金额,
sum(case when Status=1 then CardSum else 0 end) as 已使用,
sum(case when Status=2 then CardSum else 0 end) as 已冻结
from GiftCard
group by BatchId

2. 统计每日,每月,每年的数据

select year(AddTime) 年,month(AddTime) 月,day(AddTime) 日,COUNT(1) 数量,sum(CardSum) 销售合计
from GiftCard
group by year(AddTime),month(AddTime),day(AddTime)

3. 某列去重统计

select COUNT(BatchId),COUNT(distinct BatchId),COUNT(distinct BatchName)
from GiftCard

4. 行转列

SELECT *
FROM (SELECT BatchName, CardSum as TotAmount FROM GiftCard) as s
PIVOT
(    SUM(TotAmount)FOR BatchName IN (zx测试商品, test新人优惠券,测试高考大放送)
)AS MyPivot

5. 得到表中最小的未使用的ID号

SELECT
(CASE WHEN EXISTS(SELECT * FROM GiftCard b WHERE b.Id = 1) THEN MIN(Id) + 1 ELSE 1 END) as Id
FROM GiftCardWHERE NOT Id IN (SELECT a.Id - 1 FROM GiftCard a)

6. 查询某一列数据不重复的数量

select * from GiftCard a where not exists(select 1 from GiftCard where BatchName=a.BatchName and ID<a.ID)

7. 按年统计1月到12个月的销量

select year(AddTime) as '年',
SUM(case when MONTH(AddTime)=1 then CardSum else 0 end ) as '一月',
SUM(case when MONTH(AddTime)=2 then CardSum else 0 end ) as '二月',
SUM(case when MONTH(AddTime)=3 then CardSum else 0 end ) as '三月',
SUM(case when MONTH(AddTime)=4 then CardSum else 0 end ) as '四月',
SUM(case when MONTH(AddTime)=5 then CardSum else 0 end ) as '五月',
SUM(case when MONTH(AddTime)=6 then CardSum else 0 end ) as '六月',
SUM(case when MONTH(AddTime)=7 then CardSum else 0 end ) as '七月',
SUM(case when MONTH(AddTime)=8 then CardSum else 0 end ) as '八月',
SUM(case when MONTH(AddTime)=9 then CardSum else 0 end ) as '九月',
SUM(case when MONTH(AddTime)=10 then CardSum else 0 end ) as '十月',
SUM(case when MONTH(AddTime)=11 then CardSum else 0 end ) as '十一月',
SUM(case when MONTH(AddTime)=12 then CardSum else 0 end ) as '十二月'from GiftCardgroup by year(AddTime)

作者:章为忠 
出处:http://www.fpeach.com/ 
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。如有问题,可以微信:18618243664 联系我,非常感谢。

扫下面的二维码关注我的微信公众号。 

常用的数据统计Sql 总结相关推荐

  1. 常用的数据统计Sql 总结(转)

    转:http://www.cnblogs.com/zhangweizhong/p/5577842.html 最近刚在搞一个BI的项目,里面需要大量的sql 数据统计相关运用,加深了我又对SQL的理解与 ...

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

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

  3. 常用的数据库统计SQL语句

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

  4. 路由器数据统计SQL脚本

    一.路由器部分//[饼图]统计路由器在线.离线数量SELECT COUNT(*) AS total,COUNT(CASE WHEN last_heartbeat_time >= UNIX_TIM ...

  5. Oracle 常用系统数据查询SQL(转)

    目录 1.查询oracle的连接数 2.查询oracle的并发连接数 3.查看不同用户的连接数 4.查看所有用户 5.查看用户或角色系统权限(直接赋值给用户或角色的系统权限) 6.查看角色(只能查看登 ...

  6. php查询数据库表中的id个数,GitHub - xindong/easy-total: 一个可以对预先设定的sql语句进行实时数据统计并输出结果的服务...

    Easy Total 这是一个通过监听预先添加好的SQL统计查询语句,对汇入的数据进行实时统计处理后不间断的将统计结果导出的服务解决方案,它解决了日志数据量非常巨大的情况下,数据库无法承载巨大的插入和 ...

  7. dataframe记录数_大数据系列之Spark SQL、DataFrame和RDD数据统计与可视化

    Spark大数据分析中涉及到RDD.Data Frame和SparkSQL的操作,本文简要介绍三种方式在数据统计中的算子使用. 1.在IPython Notebook运行Python Spark程序 ...

  8. oracle常用数据统计,学习笔记:Oracle DBMS_STATS常用方法汇总 常用于收集统计oracle...

    天萃荷净 Oracle数据库中DBMS_STATS常用方法(收集oracle数据库.索引.表等信息) –收集Oracle数据库信息命令 EXEC DBMS_STATS.gather_database_ ...

  9. Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(上)

    <Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(上)> <Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(下)> 目的:指导项 ...

最新文章

  1. 人脸识别经典算法:特征脸方法(Eigenface)
  2. 如何在windows系统上安装ubuntu双系统
  3. adb connect 出现timeout的处理方式
  4. 日历 日期时间选择器
  5. Codeforces Round #592 (Div. 2) G. Running in Pairs 构造(水)
  6. acer笔记本电脑如何进入bios设置
  7. php 编译安装参数详解
  8. 含有REF CURSOR 的过程只能有一个out参数?
  9. matlab如何求距平,matlab编程语句
  10. 计算机二级公共基础知识笔记
  11. SATI下载-安装-使用 一看便懂+spss聚类(附安装包)
  12. rmvb 转 avi 方法
  13. nodejs服务器部署unexpected token{
  14. 基于WDF框架的PCIE驱动设计
  15. 没有苹果开发账号,只有p12文件和mobileprovision文件进行打包
  16. java 僵尸进程_神奇的Java僵尸(defunct)进程问题排查过程
  17. 雷神ZERO游戏本和ROG冰刃5Plus的 区别 选哪个
  18. 基于单片机的双足仿生运动机器人的设计
  19. PHP:【微信小程序】初识微信小程序,微信小程序配置
  20. 如何在CAD中等比例插入光栅图像

热门文章

  1. 第1节 IMPALA:4、5、linux磁盘的挂载和上传压缩包并解压
  2. Web自动化测试理论知识
  3. Mysql CURD复习(数据库、表、数据)
  4. Oracle 11g 新特性 -- 自动诊断资料档案库(ADR) 说明
  5. Hibernate4实战 之 第一部分 Hibernate入门
  6. CodeSmith基础(二)
  7. TranslateMessage ,GetMessage, DispatchMessage分析
  8. 安卓手机反应慢又卡怎么办_手机卡顿反应慢怎么解决?
  9. php 声波图,Canvas 美丽的声波图
  10. linux 配置思科路由器,将配置文件导入cisco2611路由器步骤