最近刚在搞一个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. 生产环境常见的HTTP状态码列表

    生产环境常见的HTTP状态码列表(List of HTTP status codes)为: 200 - OK,服务器成功返回网页     - Standard response for success ...

  2. Linux下如何查看版本信息

    Linux下如何查看版本信息, 包括位数.版本信息以及CPU内核信息.CPU具体型号等等,整个CPU信息一目了然.   1.# uname -a   (Linux查看版本当前操作系统内核信息)   L ...

  3. x01.TodoList:Asp.Net 5 初探

    ASP.NET 5 是比较新的,除了汤姆的博文,学习资料并不多.而学习没有例子上手,是比较痛苦的. 1.运行 vs2015,新建项目,选择 Asp.Net 5 WebApp 模板,默认运行即可.对照汤 ...

  4. sql select 1-10的数字

    SELECT V FROM (   VALUES (1), (2), (3), (4), (5),          (6), (7), (8), (9), (10) ) [1 to 10](V)

  5. 【转】XenServer架构之XAPI

    一.XAPI对资源池的管理 作为XenServer的管理工具集,XAPI管理XenServer的主机,网络和存储.不管是OpenStack还是CloudStack,如果使用XenServer作为虚拟化 ...

  6. C++点滴----关于类常成员函数

    关于C++中,类的常成员函数 声明样式为:   返回类型 <类标识符::>函数名称(参数表) const 一些说明: 1.const是函数声明的一部分,在函数的实现部分也需要加上const ...

  7. liunx关闭防火墙

    Redirecting to /bin/systemctl stop iptables.service systemctl stop iptables.service ?????? centos从7开 ...

  8. CodeBlocks及LCM应用

    以下是在开发过程中遇到的一些细节点: 1)called after throwing an instance of std::bad_alloc 此问题是由于publish(data),当中data赋 ...

  9. gerrit 为每个工程设置提交的reviewer

    尝试安装了 https://gerrit-ci.gerritforge.com/job/plugin-reviewers-stable-2.13/lastSuccessfulBuild/artifac ...

  10. textarea 中的 innerHTML 和 value

    <textarea></textarea> <input type="button" value="click" /> &l ...