数据库 sql语句查询

数据库 sql语句查询,第1张

(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 s

from (

    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数据库查询问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10135169.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存