|
我有个table 叫 salessummary,是拿来记录每个顾客在每个月的购买数额。
以下是这个table的field -
bonusmonth -记录月份和年份
customerid - 顾客编号
rank - 顾客等级
sales - 购买数额
我要summary by sales,例如这个月购买数额少过300的有几位顾客,
在$300 到$400 之间的有几位顾客,等等。
请问要如何用SQL select 一个像以下的result?
bnsmonth rank description total
01/2007 1 < 300 10
01/2007 1 300 - 400 5
01/2007 1 400 - 500 17
01/2007 1 500 - 600 3
01/2007 2 < 300 220
01/2007 2 300 - 400 17
01/2007 2 400 - 500 17
01/2007 2 500 - 600 41 |
|
|
|
|
|
|
|
发表于 5-10-2007 02:47 PM
|
显示全部楼层
回复 #1 chewkit 的帖子
1.例如这个月购买数额少过300的有几位顾客
SELECT COUNT(customerid) FROM salessummary WHERE sales<300
2.在$300 到$400 之间的有几位顾客
SELECT COUNT(customerid) FROM salessummary WHERE sales BETWEEN 300 AND 400
我不是很清楚你要的是不是这个。。。希望可以帮到你~ |
|
|
|
|
|
|
|

楼主 |
发表于 5-10-2007 04:11 PM
|
显示全部楼层
原帖由 pipiLee 于 5-10-2007 02:47 PM 发表 
1.例如这个月购买数额少过300的有几位顾客
SELECT COUNT(customerid) FROM salessummary WHERE sales
是,就是这个。
但是,这个方法是不是要用很多sub query来完成? |
|
|
|
|
|
|
|
发表于 5-10-2007 05:13 PM
|
显示全部楼层
原帖由 chewkit 于 5-10-2007 02:39 PM 发表 
我有个table 叫 salessummary,是拿来记录每个顾客在每个月的购买数额。
以下是这个table的field -
bonusmonth -记录月份和年份
customerid - 顾客编号
rank - 顾客等级
sales - 购买数额
我要summary by sales,例如这个月购买数额少过300的有几位顾客,
在$300 到$400 之间的有几位顾客,等等。
请问要如何用SQL select 一个像以下的result?
bnsmonth rank description total
01/2007 1 < 300 10
01/2007 1 300 - 400 5
01/2007 1 400 - 500 17
01/2007 1 500 - 600 3
01/2007 2 < 300 220
01/2007 2 300 - 400 17
01/2007 2 400 - 500 17
01/2007 2 500 - 600 41
先把description record 在一個table裏面
design 可以如下
RANGE_AMT
Code
| MinAmt
| MaxAmt
| 1
| 0
| 299
| 2
| 300
| 399
| 3
| 400
| 499
|
然後 create 下面這個function
- CREATE FUNCTION GetRange(@sales float)
- RETURNS NVARCHAR(20) AS
- BEGIN
- DECLARE @AMT NVARCHAR(20)
- BEGIN
- SET @AMT = (SELECT (CAST(MINAMT AS NVARCHAR(10))+'-'+CAST(MAXAMT AS
- NVARCHAR(10))) FROM RANGE_AMT WHERE @SALES BETWEEN MINAMT AND MAXAMT)
- END
- RETURN @AMT
- END
复制代码
之後
SELECT A.BONUSMONTH,A.RANK,dbo.GetRange(SUM(A.SALES))AS DESCRIPTION,SUM(A.SALES)AS SALES,A.CUSTOMERID
FROM SALESSUMMARY A
GROUP BY A.BONUSMONTH,A.RANK,A.CUSTOMERID
之後再count CustomerID
應該是這樣吧
|
|
|
|
|
|
|
|

楼主 |
发表于 5-10-2007 05:19 PM
|
显示全部楼层
原帖由 kristy 于 5-10-2007 05:13 PM 发表 
先把description record 在一個table裏面
design 可以如下
RANGE_AMT
Code
MinAmt
MaxAmt
1
0
299
2
300
399
3
400
499
然後 create 下面這個function
CREATE FUNCTION GetRang ...
让我试试先,谢谢! |
|
|
|
|
|
|
| |
本周最热论坛帖子
|