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

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

转:http://www.cnblogs.com/zhangweizhong/p/5577842.html

 

最近刚在搞一个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 GiftCard

WHERE 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 GiftCard

group by year(AddTime)
如何联系我:【万里虎】www.bravetiger.cn 【QQ】3396726884 (咨询问题100元起,帮助解决问题500元起) 【博客】http://www.cnblogs.com/kenshinobiy/
目录
相关文章
|
11月前
|
SQL 关系型数据库 MySQL
MySQL实战基础知识入门(8):当天和昨天24小时数据统计的sql语句解决方案
MySQL实战基础知识入门(8):当天和昨天24小时数据统计的sql语句解决方案
343 0
MySQL实战基础知识入门(8):当天和昨天24小时数据统计的sql语句解决方案
|
SQL 存储 缓存
老司机总结的12条 SQL 优化方案(非常实用)(一)
老司机总结的12条 SQL 优化方案(非常实用)
老司机总结的12条 SQL 优化方案(非常实用)(一)
|
SQL 存储 数据库
Sql知识总结-库表视图的增删改查
Sql知识总结-库表视图的增删改查
134 0
|
SQL 存储 数据库
工作总结之因为笛卡尔积问题写SQL搞了半天[害](附笛卡尔积总结)
在关系数据库中,一个查询往往会涉及多个表,因为很少有数据库只有一个表,而如果大多查询只涉及到一个表的,那么那个表也往往低于第三范式,存在大量冗余和异常。
239 0
工作总结之因为笛卡尔积问题写SQL搞了半天[害](附笛卡尔积总结)
|
SQL 数据库 Windows
常用的SQL语句语法总结
sql语句、sql语法、基于sql语句的一些常用语法积累总结。
385 0
|
SQL 存储 分布式计算
ODPS SQL优化总结
ODPS(Open Data Processing Service)是一个海量数据处理平台,基于阿里巴巴自主研发的分布式操作系统(飞天)开发,是公司云计算整体解决方案中最核心的主力产品之一。本文结合作者多年的数仓开发经验,结合ODPS平台分享数据仓库中的SQL优化经验。
2366 0
ODPS SQL优化总结
|
SQL 关系型数据库 MySQL
老司机总结的12条 SQL 优化方案(非常实用)(二)
老司机总结的12条 SQL 优化方案(非常实用)(二)
老司机总结的12条 SQL 优化方案(非常实用)(二)
|
SQL 关系型数据库 MySQL
SQL:MySQL7种JOIN用法总结
SQL:MySQL7种JOIN用法总结
222 0
SQL:MySQL7种JOIN用法总结
|
SQL 数据库 数据安全/隐私保护
数据库常用SQL总结
数据库常用SQL总结
253 0
|
SQL 数据挖掘 关系型数据库
由一次 UPDATE 过慢 SQL 优化而总结出的经验
由一次 UPDATE 过慢 SQL 优化而总结出的经验
由一次 UPDATE 过慢 SQL 优化而总结出的经验