如何取占销售额前80%内的品种?

hlj321 2012-11-19 02:49:32
按单品销售额分类
取前三个月的销售
按单品销售额从高到低排序
占销售额前80%的算a类
80%—95%的算b类
95%之后的算c类
下面是生成数据的语句
CREATE TABLE [dbo].[xs](
[rq] [date] NULL,
[SPID] [int] NOT NULL,
[je] [decimal](38, 2) NULL
) ON [PRIMARY]
GO

DECLARE @loop INT
DECLARE @rq DATETIME
DECLARE @je DECIMAL(20,2)
SET @rq = CONVERT(VARCHAR(10),DATEADD(MONTH,-3,GETDATE()),121)
WHILE @rq < GETDATE()
BEGIN
SELECT @loop = 1
WHILE @loop <= 200
BEGIN
SELECT @je = RAND() * 1000.00,@loop = @loop + 1
INSERT INTO XS (rq,SPID,je) VALUES(@rq,@loop,@je)
END
SET @rq = DATEADD(DAY,1,@rq)
END
...全文
385 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
-晴天 2012-11-19
  • 打赏
  • 举报
回复
... 以为一行一项的.
开启时代 2012-11-19
  • 打赏
  • 举报
回复
引用 5 楼 lixzhong 的回复:
with TB as ( select SPID,SUM(je) as je,ROW_NUMBER() over(order by sum(je) desc) as rowid from XS where rq>DATEADD(month,-3,getdate()) group by spid ) ----全部商品分类 select SPID,je,case wh……
这个是4秒 难道我机器高配吗?
-晴天 2012-11-19
  • 打赏
  • 举报
回复
如果嫌慢的话,可以这样:
declare @c decimal(38,2)
select @c=sum(je) from xs
select *,identity(int,1,1) as rn,convert(decimal(38,2),0.00) as s into #c1 from xs order by je desc
update #c1 set s=je where rn=1
while exists(select 1 from #c1 where s=0)
update a set a.s=a.je+b.s from #c1 a inner join #c1 b on a.rn=b.rn+1 where a.s=0 and b.s>0
select rq,spid,je,(case when s<@c*0.8 then 'a' when s<@c*0.95 then 'b' else 'c' end)as flg from #c1 order by spid
go
drop table #c1
不过也差不多得四分钟(在我的机器上)才能执行完.
-晴天 2012-11-19
  • 打赏
  • 举报
回复
declare @c decimal(38,2)
select @c=sum(je) from xs
;with c1 as(
select *,rn=row_number()over(order by je desc),0 as s from xs
),c2 as(
select rq,spid,je,rn,je as s,'a' as flg from c1 where rn=1
union all
select a.rq,a.spid,a.je,a.rn,a.je+b.s as s,
(case when a.je+b.s<@c*0.8 then 'a' when a.je+b.s<0.95 then 'b' else 'c' end) as flg
from c1 a inner join c2 b on a.rn=b.rn+1 where a.s=0 and b.s>0
)
select rq,spid,je,flg from c2 OPTION (MAXRECURSION 0)
hlj321 2012-11-19
  • 打赏
  • 举报
回复
引用 5 楼 lixzhong 的回复:
with TB as ( select SPID,SUM(je) as je,ROW_NUMBER() over(order by sum(je) desc) as rowid from XS where rq>DATEADD(month,-3,getdate()) group by spid ) ----全部商品分类 select SPID,je,case when (select SU……
谢谢,正解
hlj321 2012-11-19
  • 打赏
  • 举报
回复
引用 3 楼 playwarcraft 的回复:
SQL code? 1234567891011121314151617 --是否这个意思? ;with cte_test as( select *, rowid= row_number() over (partition by spid order by je desc) ,cnt = (select count(*) from xs where spid=a.spid ……
不是记录数,应当是je金额比,占销售金额的80%
开启时代 2012-11-19
  • 打赏
  • 举报
回复
with TB as ( select SPID,SUM(je) as je,ROW_NUMBER() over(order by sum(je) desc) as rowid from XS where rq>DATEADD(month,-3,getdate()) group by spid ) ----全部商品分类 select SPID,je,case when (select SUM(je) from TB where rowid<=a.rowid)/(select SUM(je) from XS where rq>DATEADD(month,-3,getdate()))*100<80 then 'A' when (select SUM(je) from TB where rowid<=a.rowid)/(select SUM(je) from XS where rq>DATEADD(month,-3,getdate()))*100 between 80 and 95 then 'B' else 'C' end 类别 from TB as a
开启时代 2012-11-19
  • 打赏
  • 举报
回复
with TB as ( select SPID,SUM(je) as je,ROW_NUMBER() over(order by sum(je) desc) as rowid from XS where rq>DATEADD(month,-3,getdate()) group by spid ) ---80%的商品 select SPID,je from TB as a where (select SUM(je) from TB where rowid<=a.rowid)/(select SUM(je) from XS where rq>DATEADD(month,-3,getdate()))*100<80
playwarcraft 2012-11-19
  • 打赏
  • 举报
回复

--是否这个意思?
;with cte_test
as
(
 select *, rowid= row_number() over (partition by spid order by je desc) 
 ,cnt = (select count(*) from xs where spid=a.spid and rq between dateadd(month,-3,getdate()) and getdate())
 from xs as a
 where rq between dateadd(month,-3,getdate()) and getdate()
)
select 
rq,spid,je,
type= case when rowid <= 0.8 * cnt then 'A'
           when rowid>0.8*cnt and rowid<= 0.95*cnt then 'B'
           else 'C' end
 from cte_test

hlj321 2012-11-19
  • 打赏
  • 举报
回复
CREATE TABLE [dbo].[xs]( [rq] [date] NULL, [SPID] [int] NOT NULL, [je] [decimal](38, 2) NULL ) ON [PRIMARY] GO DECLARE @loop INT DECLARE @rq DATETIME DECLARE @je DECIMAL(20,2) SET @rq = CONVERT(VARCHAR(10),DATEADD(MONTH,-3,GETDATE()),121) WHILE @rq < GETDATE() BEGIN SELECT @loop = 1 WHILE @loop <= 200 BEGIN SELECT @je = RAND() * 1000.00,@loop = @loop + 1 INSERT INTO XS (rq,SPID,je) VALUES(@rq,@loop,@je) END SET @rq = DATEADD(DAY,1,@rq) END
开启时代 2012-11-19
  • 打赏
  • 举报
回复
语句别这么贴 ,出来乱七八糟的 还得重新排版 。
用数据来写一份经营分析报告(一) 作者:张晓 来源:瑞商网 (2011-05-19) 【编辑语录】 "用数据说话,按流程办事"一直是瑞商网所倡导的。对于经营分析,用数据来一一证明 相关经营成果,是非常有说服力的,比如说:全年的经营情况,可以通过曲线图,一目 了然的看到那个季度的销售表现如何,进一步分析,可以找出为什么会出现这种变化, 客单价与来客数是上升还是下降,通过这些数据表现,大胆预测,小心求证,就是一份 完美的经营分析报告了。 作为企业的管理人员,很多时候需要写经营分析报告,如果能够用数据来写一份经营分 析报告,那么说服力或让人信服力应该是最强的,因为,有很多时候,用语言来表达, 总会让人产生这样那样的疑问,总会有人质疑这个结果的提是不是成立的,而数据是 板上钉钉的事实依据,因此,如果想写一份有说服力的经营分析报告,必须要依靠数据 。 但是,对于刚开始用数据来分析经营情况的人来说,用数据写一份经营分析报告也不是 一件容易的事,本人根据自己写经营分析报告的实际经验,简单整理了一个写经营分析 报告的思路,可供初学者来参考。如果要是做深入的研究,那么这个思路可以起一个大 纲的作用。 (特殊说明:本文引用的图表均是自瑞商数据分析系统的截图,数据分析如果借助信 息化的专业工具来做,可以达到事半功倍的效果,并且可以一目了然,沿着思路做层层 追踪。) 1.整体经营情况的分析 1.1用数据来说明本期与上一期的对比情况(可以是年、半年、季、月等的对比分析) 如下面的图表所示: 从上面这张图表中,可以很清楚地说明本期和上期各项指标的变化情况,如图中所示: 2007年同比2006销售和毛利各呈现出了上升趋势。进销毛利率上升了3.89个百分点。整 个大的趋势是非常可喜的。 1.2本期内的销售变化趋势情况 看同比可以看出整体的趋势,而看一个区间内的实际走向,就得看变化的趋势了。如下 图所示: 从上面的图表中,可以得出分析结论:整体销售额的变化并不是呈现出直线上升的,并 且自第三季度始,销售呈现出下降的趋势,到第四季度的中期有反弹,但是在最后一个 月,仍然在下滑,因此,虽然从第一项上看到07年比06年要好很多,但是在销售指标上 面,可以看到,销售额在第四季度表现并不乐观,必须要开始分析具体的原因,遏制住 这种不良的销售状态。因为销售额是零售业是最根本的利润源泉。 1.3本期内进销毛利率的变化趋势 可以看如下的毛利变化趋势图 从上面图表可以看出来,虽然销售额在曲折波动,并在第四季度呈现下滑趋势,但是进 销毛利率却呈现出强劲的曲折上扬态势,并且在第四季度销售反弹中达到一年中的最高 峰值,当然,随着销售的下滑,最后一个月的进销毛利也呈现了下滑。因为进销毛利额 =应收金额*进销毛利率,所以,可能想象,一年内毛利率的表现肯定是可圈可点的。 1.4本期内毛利率的变化趋势 (可以通过如下的图示从分析系统中获得) 从上面毛利率的变化趋势图我们可以看到,毛利率呈现出一路上扬的趋势,尤其是是在 第四季度,更是几乎呈现出直线上升的趋势,并在第四季度上升至全年的最高峰。 1.5整体销售小结: 结合销售额,毛利率和毛利的情况,虽然销售在下降,但因为毛利率的提升,换回了市 场份额萎缩带来的损失。从一个分析者的角度来看,单从三个指标的此消彼长,不敢妄 下结论,但从猜测的角度来看,销售额的下降和毛利率的提升究竟有没有什么关系呢? 这值得做进一步的研究。首先可以分析一下各品类的销售变化情况 用数据来写一份经营分析报告(二) 作者:张晓 来源:瑞商网原创 (2010-12-29) 1. 各品类的经营情况分析 2.1各品类的经营比情况 首先可以看一下各类比的排行情况 上图是一个以销售金额为主的降序排行,根据这张图表,可以分析出以下几个问题 2.1.1各品类比与市场品类的比对比分析 市场品类的比要从市场报告中获得,需要收集自身经营以外的数据,通过这个比分 析,企业可以看到本公司是否还有一些品类存在着上升的空间。做这个对比分析时,如 果收集不到准确的市场报告,那么作为连锁药店,可以收集旗下类似商圈的各个分店的 这项指标的比,然后做一个平均值,再用各个门店的指标比情况与这个均值来做比 较,就可以清楚地看到,某些门店在某些品类上面,还存在着很大的上升空间。 2.1.2销售品种数和销售额比情况分析 从这个比分析中,可以看到企业现有的品类品种结构是否过于分散。这样的分析往往 作为逻辑分析的开端,在此项分析中,比分析可以说明销售额品种数的匹配关系是 否合理,如果结合库存的品种和库存额度的情况,在逻辑推理下,可以发现品种的滞销 情况,库存的合理情况,商品品结构的合理情况等等。 2.1.3进销毛利的比与品种比和销售金额的比分析三项综合分析 这样的综合分析,可以发现,
汽车租赁系统的开发过程中,采用B/S架构,主要使用Java主流技术进行开发,结合最新流行的SSM框架。使用Mysql数据库和Eclipse或者IDEA开发环境。包括登录、首页、客户管理、车辆管理、汽车出租、出租单管理、汽车入库、检查单管理、系统管理等功能,适合二次开发课程设计、毕业设计等。业务模块1、客户管理客户列表客户分页和模糊查询客户添加、修改、删除导出客户数据2、车辆管理车辆列表车辆车辆分页和模糊查询车辆添加、修改、删除3、汽车出租根据客户身份证查询所有未出租的车辆信息进行出租4、出租单管理多条件的模糊查询和分页出租单的修改、删除、导出5、检查单管理多条件模糊查询和分页检查单修改导出检查单系统模块1、用户登陆校验用户名和密码登陆成功将登陆信息写入登陆日志未登录进行拦截2、菜单管理全查询菜单和根据左边的树查询不同菜单菜单的添加、修改、删除3、角色管理全查询角色和模糊查询角色的添加、修改、删除4、用户管理全查询用户和模糊查询用户的添加、修改、删除以及重置密码5、数据源的监控(druid monitor)6、统计分析客户地区统计分析公司年度月份销售额统计分析业务员年度销售额统计分析 开发技术和环境开发环境操作系统:Windows/Mac OS编程语言:Java开发工具:IDEA、Navicat项目构建:Maven 3.5.2服务器:Tomcat 8.5数据库:MySQL 8.0开发技术后台技术选型:SSM(Spring SpringMVC Mybatis)端技术选型:LayUI、dtree、echarts测试账号管理员: admin/123456业务员:zhangsan/123456 部分运行截图分为管理员与业务员角色,用于汽车租赁后台管理系统,功能相对完善!登录 首页 客户管理车辆管理 车辆添加 汽车出租 出租单管理 汽车入库 检查单管理菜单管理 角色管理 用户管理 日志管理 公告管理 数据源监控客户地区统计分析 公司年度月份销售额统计分析业务员年度销售额论文截图源码截图数据库截图     

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧