高分求问一sql统计语句!能实现必定给分----100

来源:百度知道 编辑:UC知道 时间:2024/09/22 22:19:46
高分求一 sql统计语句,能实现必给分!
要求:将网络商城中各个商店的订单进行统计,并插入一统计表里(按每月)
orders表有几个关键的字段:
shopID--商店用户ID int
userID--订单用户ID int
Fee--订单总金额 money
orderStatus--订单状态 varchar-新订单,已完成,已放弃
orderTime--订单日期时间 datetime
orderTJ表:
ordermonth:int 月份
orderyear:int 年份
shopID:int 商店ID
sumFee:一月来总交易金额
counts:总订单数
completedFee:成功交易金额
completedCount:成功交易数量
failFee:
failCount:
newFee:
newCount:

要尽量提高运行速度!
统计表orders
把统计后存于orderTJ表里!
各统计项都说得清清楚楚了!

急呀,在线等!!!!

狂晕,给仔细的讲解,现实后可以加到300分!!!!!

就是汇总很简单啊

insert into orderTJ /*将结果插入到orderTJ表*/
select month(orderTime), /*取得月份*/
year(orderTime), /*取得年份*/
shopID, /*取得商店用户ID*/
sum(Fee), /*计算总交易金额*/
count(1), /*计算总订单数*/
sum(case when orderStatus='已完成' then Fee else 0 end), /*当订单状态是已完成时将该笔交易金额相加,否则当作零*/
sum(case when orderStatus='已完成' then 1 else 0 end), /*当订单状态是已完成时将交易数量加一,否则加零*/
sum(case when orderStatus='已放弃' then Fee else 0 end), /*同上*/
sum(case when orderStatus='已放弃' then 1 else 0 end), /*同上*/
sum(case when orderStatus='新订单' then Fee else 0 end), /*同上*/
sum(case when orderStatus='新订单' then 1 else 0 end) /*同上*/
from orders group by month(orderTime),year(orderTime),shopID /*用group汇总记录,每年每月每个相同的ID都作为一条当独的记录,然后将所有属于该条记录的行进行以上的统计工作*/

补充楼上的

GROUP BY 后面要用HAVING语句来控制条件

....
HAVING month(orderTime) = '9' AND year(orderTime) = '2006'

最好做成procedure,方便以后使用