最近刚在搞一个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. 前端开发--ppt展示页面跳转逻辑实现

    1. 工程地址:https://github.com/digitalClass/web_page 网站发布地址: http://115.28.30.25:8029/ 2. 今天遇到一个小问题, 同组的 ...

  2. html 概念

    HTML 超文本标记语言,标准通用标记语言下的一个应用.http://baike.baidu.com/link?url=RYF4Pj7VUPifcXatU7OJLGRljIgkp4MjzkspARor ...

  3. 吐槽CodeDom

    用着.NET Framework,发现了CodeDom的先天性缺陷,心里百般难受. 不知道 CodeDom 是什么的请看这里 CodeDom_百度百科 这里有CodeDom非常全的中文教程 CodeD ...

  4. 使用beautifulsoup与requests爬取数据

    1.安装需要的库 bs4 beautifulSoup  requests lxml如果使用mongodb存取数据,安装一下pymongo插件 2.常见问题 1> lxml安装问题 如果遇到lxm ...

  5. mysql报错: 1548-Cannot load from mysql.proc. The table is probably corrupted 解决办法

    use mysql: ALTER TABLE `proc` MODIFY COLUMN `comment` text CHARACTER SET utf8 COLLATE utf8_bin NOT N ...

  6. 初识redis数据类型

    初识redis数据类型 1.String(字符串) string是redis最基本的类型,一个key对应一个value. string类型是二进制安全的.意思是redis的string可以包含任何数据 ...

  7. [No000098]SVN学习笔记5-分支,合并,属性,补丁,锁,分支图

    行结束符和空白选项 在项目的生命周期中,有时可能会将行结束符由 CRLF 改为 LF,或者修改一段代码的缩进.不幸的是这样将会使大量的代码行被标记为已修改,尽管代码本身并没有被修改.这里列出的选项将会 ...

  8. Hbase学习连接-数据导入

    http://www.csdn.net/article/2014-01-07/2818046

  9. 4种解决json日期格式问题的办法

    4种解决json日期格式问题的办法   开发中有时候需要从服务器端返回json格式的数据,在后台代码中如果有DateTime类型的数据使用系统自带的工具类序列化后将得到一个很长的数字表示日期数据,如下 ...

  10. [LeetCode] Valid Word Square 验证单词平方

    Given a sequence of words, check whether it forms a valid word square. A sequence of words forms a v ...