日期:2014-05-18 浏览次数:20594 次
-- 1. 如何用SQL语句算出某人员第一天注册时一共产生了多少收据? select sum(b.数量) '数量' from 表一 a inner join 表二 b on a.活动ID=b.活动ID where a.人员ID=[某人员] and cast(rtrim(a.年)+'/'+rtrim(a.月)+'/'+rtrim(a.日) as date) =(select top 1 cast(c.注册日期 as date) from 表三 c where c.人员ID=a.人员ID) -- 2. 如何用SQL语句算出某注册了5年的用户上周产生了多少收据? select sum(b.数量) '数量' from 表一 a inner join 表二 b on a.活动ID=b.活动ID where a.人员ID=[某注册了5年的用户] and datediff(wk,cast(rtrim(a.年)+'/'+rtrim(a.月)+'/'+rtrim(a.日) as date),getdate())=1 -- 3. 如何用SQL语句去计算各个活动产生收据在收据总量里面所占的百分比? select a.活动ID, cast(sum(b.数量)*1.0/(select sum(数量) from 表二)*100 as varchar(5))+'%' '百分比' from 表一 a inner join 表二 b on a.活动ID=b.活动ID group by a.活动ID
------解决方案--------------------
还有一个小问题,就是关于 挑选注册5年的用户的问题,我想应该是现在的日期跟他的注册时间相减,然后判断是否大于5*365天?
不过本人太菜了,不知道咋写出来……
select DATEadd (YY ,-5,getdate())
得到的时间就是五年前的今天
------解决方案--------------------
-- 挑选注册5年的用户 select * from 表三 where datediff(yyyy,cast(注册日期 as date),getdate())>=5