我现在接到几道关于SQL的测试题,希望大家能够帮我一下:数据库:表一:
活动ID 月 日 年 具体活动 项目 人员ID表二:
收据ID 活动ID 数量表三:
人员ID 国家ID 注册日期现在有一个问题是,注册日期是 1/6/2011之类的格式,但是在表一里面这些格式被分开了我需要解答的问题:1. 如何用SQL语句算出某人员第一天注册时一共产生了多少收据?
2. 如何用SQL语句算出某注册了5年的用户上周产生了多少收据?
3. 如何用SQL语句去计算各个活动产生收据在收据总量里面所占的百分比?本人菜鸟一只,正在学SQL,希望各路大仙给一些提示。谢谢!
活动ID 月 日 年 具体活动 项目 人员ID表二:
收据ID 活动ID 数量表三:
人员ID 国家ID 注册日期现在有一个问题是,注册日期是 1/6/2011之类的格式,但是在表一里面这些格式被分开了我需要解答的问题:1. 如何用SQL语句算出某人员第一天注册时一共产生了多少收据?
2. 如何用SQL语句算出某注册了5年的用户上周产生了多少收据?
3. 如何用SQL语句去计算各个活动产生收据在收据总量里面所占的百分比?本人菜鸟一只,正在学SQL,希望各路大仙给一些提示。谢谢!
where a.人员ID=c.人员ID and a.活动ID=b.活动ID
and c.注册日期='1/6/2011'
-- 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
错了,应该是 sum(b.收据ID)
不过本人太菜了,不知道咋写出来……
select DATEadd (YY ,-5,getdate())得到的时间就是五年前的今天
-- 挑选注册5年的用户
select * from 表三
where datediff(yyyy,cast(注册日期 as date),getdate())>=5