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

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

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

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

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

select year(AddTime) 年,month(AddTime) 月,day(AddTime) 日,COUNT() 数量,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 = ) THEN MIN(Id) + ELSE END) as Id
FROM GiftCard WHERE NOT Id IN (SELECT a.Id - FROM GiftCard a)

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

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

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

select year(AddTime) as '年',
SUM(case when MONTH(AddTime)= then CardSum else end ) as '一月',
SUM(case when MONTH(AddTime)= then CardSum else end ) as '二月',
SUM(case when MONTH(AddTime)= then CardSum else end ) as '三月',
SUM(case when MONTH(AddTime)= then CardSum else end ) as '四月',
SUM(case when MONTH(AddTime)= then CardSum else end ) as '五月',
SUM(case when MONTH(AddTime)= then CardSum else end ) as '六月',
SUM(case when MONTH(AddTime)= then CardSum else end ) as '七月',
SUM(case when MONTH(AddTime)= then CardSum else end ) as '八月',
SUM(case when MONTH(AddTime)= then CardSum else end ) as '九月',
SUM(case when MONTH(AddTime)= then CardSum else end ) as '十月',
SUM(case when MONTH(AddTime)= then CardSum else end ) as '十一月',
SUM(case when MONTH(AddTime)= then CardSum else end ) as '十二月' from GiftCard group by year(AddTime)

常用的数据统计Sql 总结的更多相关文章

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

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

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

    一.路由器部分 //[饼图]统计路由器在线.离线数量 SELECT COUNT(*) AS total, MINUTE)) ELSE NULL END) AS livecount, MINUTE)) ...

  3. oralce数据库常用到的一些sql命令(加字段注释,修改数据之类)

    最近开始接触oralce,整理了一下最近使用 pl/sql 常用到的一些sql命令 1.修改表中的数据 编写查询语句及条件,然后加上"FOR UPDATE","FOR U ...

  4. awk 常用选项及数组的用法和模拟生产环境数据统计

    awk 常用选项总结 在 awk 中使用外部的环境变量 (-v) awk -v num2="$num1" -v var1="$var" 'BEGIN{print ...

  5. 大数据学习day33----spark13-----1.两种方式管理偏移量并将偏移量写入redis 2. MySQL事务的测试 3.利用MySQL事务实现数据统计的ExactlyOnce(sql语句中出现相同key时如何进行累加(此处时出现相同的单词))4 将数据写入kafka

    1.两种方式管理偏移量并将偏移量写入redis (1)第一种:rdd的形式 一般是使用这种直连的方式,但其缺点是没法调用一些更加高级的api,如窗口操作.如果想更加精确的控制偏移量,就使用这种方式 代 ...

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

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

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

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

  8. 在Sqlserver下巧用行列转换日期的数据统计

    在Sqlserver下巧用行列转换日期的数据统计 前言 在SQLSERVER 中有很多统计函数的基础语法,有使用Group By 或 partition by 后配合Sum,Count(*) 等用法. ...

  9. Asp.net管理信息系统中数据统计功能的实现

    数据统计是每个系统中必备的功能,在给领导汇报统计数据,工作中需要的进展数据时非常有用. 在我看来,一个统计的模块应该实现以下功能: 能够将常用的查询的统计结果显示出来: 显示的结果可以是表格形式,也可 ...

随机推荐

  1. C#委托的介绍(delegate、Action、Func、predicate)

    委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递.事件是一种特殊的委托. 1.委托的声明 (1). delegate delegate我们常用到的一种声明   Deleg ...

  2. linux ssh远程免登陆

    一.备份: 操作之前先将/root/.ssh/下的known_hosts备份成known_hosts.bak

  3. YII2 载入默认值 loadDefaultValues

    本人很懒,所以喜欢找现成的东西来用,所以在载入默认值的时候我直接就选择了Yii2 自带的loadDefaultValues 问题来了,我提交的时候发现我在rules里面设置的default没有工作 [ ...

  4. Resharper 检测所有NullReferenceExceptions(空指针)

    需求分析 "null exception"很见的一种异常,但在某些情况下却会引起严重的bug! 本文目的就是对代码进行null 的检查,避免不应该出现的Error. 本文借助res ...

  5. Softreference | WeakReference

    转自:http://blog.csdn.net/kavendb/article/details/5935577 本文介绍对象的强.软.弱和虚引用的概念.应用及其在UML中的表示. 1.对象的强.软.弱 ...

  6. TestNG 入门教程

    原文出处:http://www.cnblogs.com/TankXiao/p/3888070.html 阅读目录 TestNG介绍 在Eclipse中在线安装TestNG 在Eclipse中离线安装T ...

  7. [LeetCode] Concatenated Words 连接的单词

    Given a list of words (without duplicates), please write a program that returns all concatenated wor ...

  8. [LeetCode] Wiggle Sort II 摆动排序

    Given an unsorted array nums, reorder it such that nums[0] < nums[1] > nums[2] < nums[3]... ...

  9. 利用HttpWebRequest实现实体对象的上传

    一 简介 HttpWebRequest和HttpWebResponse类是用于发送和接收HTTP数据的最好选择.它们支持一系列有用的属性.这两个类位 于System.Net命名空间,默认情况下这个类对 ...

  10. windows批处理运行java程序

    明确需求 今天你编了一个java swing版照片查看器,想让计算机上的所有照片默认打开方式都改成你的照片查看器. 使用工具软件 很多工具软件都是不把jre打包到exe中的,这就是说打包之后的exe只 ...