(1)学生信息表Smdents(sno,sname);(2)运动对信息表sports(spno,spname);(3)参加运动队情况表Attending(sno,spno,item—参加运动项目,score)。
求:①select sno,sname,score
from Smdents,sports,Attending
where item=('轮滑' and '羽毛球') and Attendingspno= sports spno and Attendingsno=Smdentssno
group by sno,sname,score
②select sname
from Smdents,sports,Attending
where spname= (select spname from Smdents,sports,Attending
where Attendingspno= sports spno and Attendingsno=Smdentssno and sname='李磊') and Attendingspno= sports spno and Attendingsno=Smdentssno
③ select sname ,count(item) as 项目总数
from Smdents,sports,Attending
where Attendingspno= sports spno and Attendingsno=Smdentssno and score>=85
group by sname
having count(item)>=3
以上在sql上运行,专业数据库问题回答户,楼主请采纳!
我刚考完数据库回来的,这些熟悉的不能再熟悉了!
SQL 数据库 实现递归查询的几种代码方法 表结构
ProductCategory
CategoryID Level ParentCategoryID
数据
T SQL
WITH CategoryTemp(CategoryID ParentCategoryID) 临时表用来保存查到的Category
(
SELECT CategoryID ParentCategoryID FROM ProductCategory WHERE ParentCategoryID<= 将所有的第一层查出来作为初始数据 需要查第几层或者哪个ParentCategoryID下面所有的 N层 把ParentCategoryID赋相关的值即可
UNION ALL 查询N层
SELECT pc CategoryID ParentCategoryID FROM ProductCategory pc
LEFT JOIN CategoryTemp ct ON pc ParentCategoryID=ct CategoryID
WHERE ParentCategoryID> 因为第一层前面已经查出来了 所以这里把第一层筛选掉
)
SELECT CategoryID ParentCategoryID FROM CategoryTemp
结果
如果把ParentCategoryID赋为 结果则为
实例
ID 是否为部门 部门名 上级ID y 部门 y 部门 n 张三 n 李二 y 部门 n 王五 y 部门3 n 小三 我想找询 ID 值为 下级的所有人员包括下级部门的所有人员
创建查询函数 create function f_id( @id int 要查询的id )returns @re table(id int level int) as begin declare @l int set @l= insert @re select id @l from 表 where 上级id=@id while @@rowcount> begin set @l=@l+ insert @re select a id @l from 表 a join @re b on a 上级id=b id and b level=@l end return end go
调用函数进行查询 select a from 表 a join f_id( ) b on a id=b id
联合查询
测试数据 create table 表(ID int 是否为部门 char( ) 部门名 varchar( ) 上级ID int) insert 表 select y 部门 union all select y 部门 union all select n 张三 union all select n 李二 union all select y 部门 union all select n 王五 union all select y 部门 union all select n 小三 go
创建查询函数 create function f_id( @id int 要查询的id )returns @re table(id int level int) as begin declare @l int set @l= insert @re select id @l from 表 where 上级id=@id while @@rowcount> begin set @l=@l+ insert @re select a id @l from 表 a join @re b on a 上级id=b id and b level=@l end return end go
调用函数进行查询 select a from 表 a join f_id( ) b on a id=b id go
删除测试 drop table 表 drop function f_id
/ 测试结果
ID 是否为部门 部门名 上级ID n 小三
lishixinzhi/Article/program/MySQL/201311/29557
SQL Server 2005开始支持分析函数,其中有row_number over函数可以按指定字段分组,并按指定字段进行排序(与查询的排序无关)编号。经过row_number分组排序编号之后,我们只要取排序编号(按你这里的意思应该是办公用品种类)值为1的记录就是你所需的记录了。
查询SQL类似如下,需要根据你的需求做适当调整:
select sfrom (
select , row_number() over (partition by OffsID order by OffsbTime desc) as idx
from table_name
) s
where idx = 1
其中,partition by后面跟的是分组的字段,应该是办公用品种类;order by是排序编号要按怎样的顺序,应该是办公用品输入日期的降序;最后where idx = 1则限制最后得到的记录为每种办公用品的最后输入的记录。
用row_number()的好处是,不仅可以获得最先一条记录,你可以获得任意前几条记录,而max, min则无法做到了。
查询的 *** 作方法和步骤如下:
1、首先,创建一个测试表,如下图所示,然后进入下一步。
2、其次,完成上述步骤后,插入测试数据,如下图所示,然后进入下一步。
3、接着,完成上述步骤后,比较两个表的数据,可以发现表2的数据多于表1的数据,如下图所示,然后进入下一步。
4、然后,完成上述步骤后,表1比表2多了一些数据,如下图所示,然后进入下一步。
5、最后,完成上述步骤后,插入在表1中多的数据,执行sql,可以发现插入了多个记录,如下图所示。这样,问题就解决了。
照着这个自己去改一下
select CONVERT(varchar(12) , date ,112 ),sum(chengji) from table where date between '2013-3-10 23:59:59' and '2013-3-12 23:59:59'
and name='小明' and age='15' group by CONVERT(varchar(12) , date ,112 )
可以有两种处理方法,1、两表先合并,后求和
select日期,sum(数值)as数值from
(select日期,金额as数值fromA表
unionall
select日期,数量as数值fromB表)
groupby日期
2、先求和后合并,再求和
select日期,sum(数值)as数值from
(select日期,sum(金额)as数值fromA表groupby日期
unionall
select日期,sum(数量)as数值fromB表groupby日期)
groupby日期
对于“如果要实现总和的相乘、相除,或者相减得话,应该怎么写呢?”,你得提出明确需求,那后才能设计。
如果是相乘、相除,或者相减,得有条件,还像上面,用日期关联,A表-B表,A表求和:select日期,sum(金额)as数值fromA表groupby日期
B表求和:select日期,sum(数量)as数值fromB表groupby日期
在执行A表-B表时,由于用日期关联,则某一日期对应的记录可能会产生三种情况:A表B表都有;A表有B表无;A表无B表有。
1、需要先找出所有日期,select日期fromA表
union
select日期fromB表
2、对于A表中所有数据以上表中日期为依据构造所有相关日期数据,如果有日期数据,则为原数据,否则为0。
selecta日期as日期,casewhenb数值isNULLthenb数值else0endas数值
from
(select日期fromA表
union
select日期fromB表)a
leftjoin
(select日期,sum(金额)as数值fromA表groupby日期)b
ona日期=b日期
3、同样对于B表也如此。
4、2表相减即得。
selecta3日期as日期,a3数值-b3数值as数值
from
(
selecta1日期as日期,casewhenb1数值isNULLthenb1数值else0endas数值
from
(select日期fromA表
union
select日期fromB表)a1
leftjoin
(select日期,sum(金额)as数值fromA表groupby日期)b1
ona1日期=b1日期
)a3,(
selecta2日期as日期,casewhenb2数值isNULLthenb2数值else0endas数值
from
(select日期fromA表
union
select日期fromB表)a2
leftjoin
(select日期,sum(金额)as数值fromB表groupby日期)b2
ona2日期=b2日期
)b3
wherea3日期=b3日期
当然,以上只是一种方法,还有其他方法也可以实现,尽供参考。
1、在数据中打开一个存在整数数值的表,然后可以看到右下角就有查看的表格数据。
2、数据中的表的自动+1,如图所示,可以编写UPDATE biao1 SET age=age+1。
3、选中 UPDATE biao1 SET age=age+1 语句点击左上角的执行查询按钮或者按按盘f9执行该语句,一个一个来执行。
4、最后,把sql改为UPDATE biao1 SET age=age2,执行该语句,就会把字段中的数值都x2运算,这样就是相加出来的结果了。
以上就是关于数据库 sql语句查询全部的内容,包括:数据库 sql语句查询、SQL数据库实现递归查询的几种代码方法、sql2005数据库查询问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)