首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

各位大神,关于SQL语句

2012-05-21 
求助各位大神,关于SQL语句我现在接到几道关于SQL的测试题,希望大家能够帮我一下:数据库:表一:活动ID 月 日

求助各位大神,关于SQL语句
我现在接到几道关于SQL的测试题,希望大家能够帮我一下:

数据库:

表一:
活动ID 月 日 年 具体活动 项目 人员ID

表二:
收据ID 活动ID 数量

表三:
人员ID 国家ID 注册日期

现在有一个问题是,注册日期是 1/6/2011之类的格式,但是在表一里面这些格式被分开了

我需要解答的问题:

1. 如何用SQL语句算出某人员第一天注册时一共产生了多少收据?
2. 如何用SQL语句算出某注册了5年的用户上周产生了多少收据?
3. 如何用SQL语句去计算各个活动产生收据在收据总量里面所占的百分比?

本人菜鸟一只,正在学SQL,希望各路大仙给一些提示。谢谢!

[解决办法]
1

select a.人员ID,b.收据ID,c.注册日期 from tb1 a,tb2 b,tb3 c
where a.人员ID=c.人员ID and a.活动ID=b.活动ID
and c.注册日期='1/6/2011'

[解决办法]

SQL code
-- 1. 如何用SQL语句算出某人员第一天注册时一共产生了多少收据?select sum(b.数量) '数量'from 表一 ainner join 表二 b on a.活动ID=b.活动IDwhere 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 表一 ainner join 表二 b on a.活动ID=b.活动IDwhere a.人员ID=[某注册了5年的用户] anddatediff(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 表一 ainner join 表二 b on a.活动ID=b.活动IDgroup by a.活动ID
[解决办法]


还有一个小问题,就是关于 挑选注册5年的用户的问题,我想应该是现在的日期跟他的注册时间相减,然后判断是否大于5*365天?
不过本人太菜了,不知道咋写出来……


 select DATEadd (YY ,-5,getdate())

得到的时间就是五年前的今天
[解决办法]
SQL code
-- 挑选注册5年的用户select * from 表三where datediff(yyyy,cast(注册日期 as date),getdate())>=5 

热点排行