㈠ sql 按照小時分組查詢並統計
--模擬銷售的表.
CREATETABLE#temp(
[銷售時間]datetime,
[銷量]int,
[實銷]int
)
go
--由於成本與毛利,我估計應該是在另外一個表裡面的,這里就不模擬了
INSERTINTO#temp
--9點的
SELECT'2013-07-1609:55:15',9,900UNIONALL
--10點的
SELECT'2013-07-1610:15:15',1,100UNIONALL
SELECT'2013-07-1610:25:15',15,1500UNIONALL
SELECT'2013-07-1610:35:15',10,1000UNIONALL
--11點的
SELECT'2013-07-1611:15:15',1,100UNIONALL
SELECT'2013-07-1611:25:15',2,200UNIONALL
SELECT'2013-07-1611:35:15',3,300UNIONALL
SELECT'2013-07-1611:45:15',4,400UNIONALL
SELECT'2013-07-1611:55:15',5,500UNIONALL
--其他的.
SELECT'2013-07-1612:15:15',12,1200UNIONALL
SELECT'2013-07-1613:15:15',13,1300UNIONALL
SELECT'2013-07-1614:15:15',14,1400UNIONALL
--中間缺少15點與16點的
SELECT'2013-07-1617:15:15',17,1700UNIONALL
SELECT'2013-07-1618:15:15',18,1800;
goSELECT
ISNULL(Convert(varchar(2),sv.number)+'-'+Convert(varchar(2),sv.number+1),'合計')AS[銷售時段],
SUM([銷量])AS[銷量],
SUM([實銷])AS[實銷],
(SELECTSUM([實銷])FROM#tempt2WHEREDATEPART(hh,t2.[銷售時間])<=ISNULL(sv.number,23))AS[累計實銷]
FROM
master..spt_valuessv
JOIN#tempt
ON(sv.number=DATEPART(hh,t.[銷售時間]))
WHERE
sv.type='P'
ANDsv.number>=9
ANDsv.number<20
GROUPBY
sv.numberWITHrollup
GO
銷售時段銷量實銷累計實銷
--------------------------------------
9-109900900
10-112626003500
11-121515005000
12-131212006200
13-141313007500
14-151414008900
17-1817170010600
18-1918180012400
合計1241240012400
(9行受影響)
這樣行么?
㈡ SQL分組求和
--count(c.proId) 也可能換成 未顯示的欄位 sum(c.qty) 數量之和
selecta.specId,a.specName,count(c.proId)as'銷量'
.specId=b.specId
innerjoinorderconb.proId=c.proId
wherecreateTime<=dateadd(month,-1,getdate())
groupbya.specId,a.specName
union
selecta.specId,a.specName,count(c.proId)as'銷量'
.specId=b.specId
innerjoinorderconb.proId=c.proId
wherecreateTime<=dateadd(month,-2,getdate())
groupbya.specId,a.specName
union
selecta.specId,a.specName,count(c.proId)as'銷量'
.specId=b.specId
innerjoinorderconb.proId=c.proId
wherecreateTime<=dateadd(month,-3,getdate())
groupbya.specId,a.specName
--或者
selectt1.specId,t1.specName,
t1.[1個月前的銷量],t2.[2個月前的銷量],t3.[3個月前的銷量]from
(selecta.specId,a.specName,count(c.proId)as'1個月前的銷量'
.specId=b.specId
innerjoinorderconb.proId=c.proId
wherecreateTime<=dateadd(month,-1,getdate())
groupbya.specId,a.specName)t1,
(selecta.specId,a.specName,count(c.proId)as'2個月前的銷量'
.specId=b.specId
innerjoinorderconb.proId=c.proId
wherecreateTime<=dateadd(month,-2,getdate())
groupbya.specId,a.specName)t2,
(selecta.specId,a.specName,count(c.proId)as'3個月前的銷量'
.specId=b.specId
innerjoinorderconb.proId=c.proId
wherecreateTime<=dateadd(month,-3,getdate())
groupbya.specId,a.specName)t3
wheret1.specId=t2.specIdandt1.specName=t2.specName
andt3.specId=t2.specIdandt3.specName=t2.specName
andt1.specId=t3.specIdandt1.specName=t3.specName
--andt1.specNamein('A','B','C','D')--根據需要再次過濾
㈢ sql語句實現分組統計
方法和詳細的操作步驟如下:
1、第一步,創建一個測試表,詳細代碼見下圖,轉到下面的步驟。
㈣ sql 20051、 對訂單信息表按照銷售部門進行分組統計,即求出每個銷售部門的銷售數量,統計的
統計
select 部門編號,部門名稱,(select sum(數量) from 銷售表 as b where b.部門編號 = a.部門編號) from 部門表 group by 部門編號
訂單
訂單應分訂單主表、訂單子表等
主表為供應商、日期、訂貨部門和人員等,
子表為商品信息、單價、數量、到貨日期等
如果有請購表,需要對應關聯。
因為不知道你的具體業務,只能說明思路,具體語句不難。
開始事務
寫主表
循環寫子表
調整請購表等的信息
結束事務
注意有錯誤處理語句和事務回滾語句。
業務流程,通用內容可參照網路搜索的《企業內部控制應用指引第7號——采購業務》
㈤ 一個日銷售量的表格,用plsql把表格的數據按照相同年月的分組,並統計月銷售量
SELECT to_char(銷售日期,
'YYYY-MM') 月份,
SUM(數量) 每月銷售量
FROM 銷售明細表
GROUP BY to_char(銷售日期,
'YYYY-MM')
㈥ SQL銷售日報表分組排序問題,請高手指導,謝謝。。。
你要怎麼分組? 能把需求說的明白點嗎?
給你寫一個類似的例子 你自己還得動動腦筋 需要的知識我幫你解決了
Select CASE WHEN
GROUPING(FItemNumber)=1
THEN 'Total:' ELSE
FItemNumber END as FItemNumber
,CASE WHEN GROUPING(Fdate)=1 THEN 'State Total:' ELSE Fdate END as Fdate
,Sum(FSaleQty) AS FSaleQty ,Sum(FAmount) AS FAmount ,Sum(FGain) AS FGain
From T_ItemSale
GROUP BY
ROLLUP(Fdate,FItemNumber)
㈦ SQL查詢各商品的銷售情況,列出商品名,商品單價,總價,並按總銷售量降序排序
1、首先打開SQL Server Management管理工具,運用Select語句查詢出要排序的數據,如下圖所示。