常用的數據統計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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM