表log
表结构
字段名 描述 数据类型 备注
ID 主标识号 INT 主键
userId 员工ID INT
groupId 业务组ID INT
phoneNumber 销售号码 Varchar(20) 唯一约束
catalogId 产品类别ID INT
stallId 产品档位ID INT
sale_time 销售时间 DATETIME 时间格式为:2008-6-17 11:12:13
feeType 付费类型 INT 0 预付费 1 后付费说明:这是一个销售记录表, 记录已经销售出去的手机号码。
其中销售的手机号码属于某一个产品档位,而多个产品档位属于某个产品类别。
userId是某个销售人员的ID,他属于一个业务组。求高手给出SQL语句:
序号 销售人员ID 销售月份 产品类别1销售数量 产品类别2销售数量 产品类别3销售数量 月总销售数量
要求统计出某个销售月份里某销售人员的销售数量,其中还要列出不同的产品类别数量
例如:序号 销售人员ID 销售月份 产品类别1销售数量 产品类别2销售数量 产品类别3销售数量 月总销售数量
1 张三 2008-06 200 300 400 900
2 李四 2008-06 311 211 111 633
3 王五 2008-06 0 11 300 311
表结构
字段名 描述 数据类型 备注
ID 主标识号 INT 主键
userId 员工ID INT
groupId 业务组ID INT
phoneNumber 销售号码 Varchar(20) 唯一约束
catalogId 产品类别ID INT
stallId 产品档位ID INT
sale_time 销售时间 DATETIME 时间格式为:2008-6-17 11:12:13
feeType 付费类型 INT 0 预付费 1 后付费说明:这是一个销售记录表, 记录已经销售出去的手机号码。
其中销售的手机号码属于某一个产品档位,而多个产品档位属于某个产品类别。
userId是某个销售人员的ID,他属于一个业务组。求高手给出SQL语句:
序号 销售人员ID 销售月份 产品类别1销售数量 产品类别2销售数量 产品类别3销售数量 月总销售数量
要求统计出某个销售月份里某销售人员的销售数量,其中还要列出不同的产品类别数量
例如:序号 销售人员ID 销售月份 产品类别1销售数量 产品类别2销售数量 产品类别3销售数量 月总销售数量
1 张三 2008-06 200 300 400 900
2 李四 2008-06 311 211 111 633
3 王五 2008-06 0 11 300 311
sum(decode(catalogId,1,1,0)) 产品类别1销售数量,
sum(decode(catalogId,2,1,0)) 产品类别2销售数量,
sum(decode(catalogId,3,1,0)) 产品类别3销售数量,
count(*) 月总销售数量
from log
group by userID, to_char(sale_time,'yyyy-mm')
以上是固定列,catalogId不知道你具体值是什么,随便写了1,2,3,你根据你的值来改
建议你自己写成通用模块。
http://topic.csdn.net/u/20080416/11/910e40c1-60f1-441f-8b0f-19a969d30f77.html
SELECT ROWNUM, USERID, DD, SUM(S1), SUM(S2), SUM(S3), SUM(S1 + S2 + S3)
FROM (SELECT USERID,
TO_CHAR(SALE_TIME, 'yyyy-mm') DD,
DECODE(CATALOGID, 1, 1, 0) S1,
DECODE(CATALOGID, 2, 1, 0) S2,
DECODE(CATALOGID, 3, 1, 0) S3
FROM LOG
WHERE SALE_TIME BETWEEN TRUNC(SYSDATE, 'mm') AND
ADD_MONTHS(TRUNC(SYSDATE, 'mm'), 1) - 0.00001)
GROUP BY USERID, DD;
具体的上边几位都说的很清楚了。
不是固定的3个类别这里的面的类别是按照销售记录里出现的类别来统计的
我上面给的例子里王五,他销售的一些产品,某些类别没有,数量就为0可能一个SQL很难解决上面那个统计,我正考虑用储存过程去解决
这位大哥,你写的SQL,能不能把DECODE()函数用别的办法给替换了,
我项目中用的是hibernate, 貌似hibernate不支持DECODE()函数, 太郁闷了
select userId 销售人员ID, to_char(sale_time,'yyyy-mm') 销售月份
sum(case catalogId when 1 then 1 else 0 end)) 产品类别1销售数量,
sum(case catalogId when 2 then 1 else 0 end)) 产品类别2销售数量,
sum(case catalogId when 2 then 1 else 0 end)) 产品类别3销售数量,
count(*) 月总销售数量
from log
group by userID, to_char(sale_time,'yyyy-mm')
sum(case catalogId when 1 then 1 else 0 end)) 产品类别1销售数量,
sum(case catalogId when 2 then 1 else 0 end)) 产品类别2销售数量,
sum(case catalogId when 2 then 1 else 0 end)) 产品类别3销售数量,
count(*) 月总销售数量
from log
group by userID, to_char(sale_time,'yyyy-mm')