高分求问一sql统计语句!能实现必定给分----100
来源:百度知道 编辑:UC知道 时间:2024/09/22 22:19:46
要求:将网络商城中各个商店的订单进行统计,并插入一统计表里(按每月)
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,方便以后使用