鸡鸭随你的无人售卖超市机是收现金还是手机支付模式啊?

在线求助啊,从没见过这样的SQL题目啊
20jan_mcdba]
在线求助啊,从没见过这样的SQL题目啊
20jan_mcdba]
编辑:www.fx114.net
本篇文章主要介绍了"在线求助啊,从没见过这样的SQL题目啊
20jan_mcdba]",主要涉及到在线求助啊,从没见过这样的SQL题目啊
20jan_mcdba]方面的内容,对于在线求助啊,从没见过这样的SQL题目啊
20jan_mcdba]感兴趣的同学可以参考一下。
日期&&&&&&&&&&&&&&货物&&&&数量&
&&&&&&牙膏&&&&&10&
&&&&&&牙膏&&&&&10&
&&&&&&牙膏&&&&&20&
&&&&&&被子&&&&&10&
结果:&查找出销售出去的货物&
日期&&&&&&&&&&&&货物&&&&&
&&&&&牙膏被子&
怎样写个函数成通用函数啊带参数的函数,返回表/*
带符号合并行列转换(爱新觉罗.毓华&于海南三亚)
有表tb,其数据如下:
如何转换成如下结果:
create&table&tb
insert&into&tb(a,b)&values(1,1)
insert&into&tb(a,b)&values(1,2)
insert&into&tb(a,b)&values(1,3)
insert&into&tb(a,b)&values(2,1)
insert&into&tb(a,b)&values(2,2)
insert&into&tb(a,b)&values(3,1)
--创建一个合并的函数
create&function&f_hb(@a&int)
returns&varchar(8000)
&&declare&@str&varchar(8000)
&&set&@str&=&''
&&select&@str&=&@str&+&','&+&cast(b&as&varchar)&from&tb&where&a&=&@a&
&&set&@str&=&right(@str&,&len(@str)&-&1)
&&return(@str)
--调用自定义函数得到结果:
select&distinct&a&,dbo.f_hb(a)&as&b&from&tb
drop&table&tb
drop&function&f_hb
a&&&&&&&&&&&b&&&&&
-----------&------
1&&&&&&&&&&&1,2,3
2&&&&&&&&&&&1,2
3&&&&&&&&&&&1
(所影响的行数为&3&行)
----------------------------------------------------
多个前列的合并
数据的原始状态如下:
ID&&PR&&&CON&&OP&&&&SC&
001&p&&&&c&&&&差&&&&6
001&p&&&&c&&&&好&&&&2
001&p&&&&c&&&&一般&&4
002&w&&&&e&&&&差&&&&8
002&w&&&&e&&&&好&&&&7
002&w&&&&e&&&&一般&&1
用SQL语句实现,变成如下的数据
ID&&PR&&&CON&&OPS
001&p&&&&c&&&&差(6),好(2),一般(4)
002&w&&&&e&&&&差(8),好(7),一般(1)
create&table&tb
&&id&&varchar(10),
&&pr&&varchar(10),
&&con&varchar(10),
&&op&&varchar(10),
insert&into&tb(ID,PR,CON,OP,SC)&values('001',&'p',&&&&'c',&&&&'差',&&&&6)
insert&into&tb(ID,PR,CON,OP,SC)&values('001',&'p',&&&&'c',&&&&'好',&&&&2)
insert&into&tb(ID,PR,CON,OP,SC)&values('001',&'p',&&&&'c',&&&&'一般',&&4)
insert&into&tb(ID,PR,CON,OP,SC)&values('002',&'w',&&&&'e',&&&&'差',&&&&8)
insert&into&tb(ID,PR,CON,OP,SC)&values('002',&'w',&&&&'e',&&&&'好',&&&&7)
insert&into&tb(ID,PR,CON,OP,SC)&values('002',&'w',&&&&'e',&&&&'一般',&&1)
--创建一个合并的函数
create&function&f_hb(@id&varchar(10)&,&@pr&varchar(10)&,&@con&varchar(10))
returns&varchar(8000)
&&declare&@str&varchar(8000)
&&set&@str&=&''
&&select&@str&=&@str&+&','&+&cast(OP&as&varchar)&+&'('&
&&&&&&&&&&&&&&&&&&&&&&&&&&&+&cast(sc&as&varchar)&+&')'&
&&from&tb&where&id&=&@id&and&@pr&=&pr&and&@con&=&con
&&set&@str&=&right(@str&,&len(@str)&-&1)
&&return(@str)
--调用自定义函数得到结果:
select&distinct&id&,&pr&,&con&,&dbo.f_hb(id,pr,con)&as&ops&from&tb
drop&table&tb
drop&function&f_hb
id&&&&&&&&&pr&&&&&&&&&con&&&&&&&&ops&&&&&&&&&&&&&&&
----------&----------&----------&------------------
001&&&&&&&&p&&&&&&&&&&c&&&&&&&&&&差(6),好(2),一般(4)
002&&&&&&&&w&&&&&&&&&&e&&&&&&&&&&差(8),好(7),一般(1)
(所影响的行数为&2&行)
----------------------------------------------------
/*如何将一列中所有的值一行显示
create&table&tb(col&varchar(20))
insert&tb&values&('a')
insert&tb&values&('b')
insert&tb&values&('c')
insert&tb&values&('d')
insert&tb&values&('e')
declare&@sql&varchar(1000)
set&@sql&=&''
select&@sql&=&@sql&+&t.col&+&','&from&(select&col&from&tb)&as&t
set&@sql='select&result&=&'''&+&@sql&+&''''
exec(@sql)
result&&&&&
----------&
a,b,c,d,e,
declare&@output&varchar(8000)
select&@output&=&coalesce(@output&+&','&,&'')&+&col&from&tb
print&@output
drop&table&tbcreate&function&f_1(@date&datetime)
returns&@rtntb&table(日期&datetime,货物&varchar(200))
insert&into&@rtntb&select&日期,货物&from&tb&where&
select&*&from&dbo.f_1(2)
drop&function&f_1
gocreate&table&tb(日期&datetime,&货物&varchar(10),&数量&int)
insert&into&tb&values('',&'牙膏',&10&)
insert&into&tb&values('',&'牙膏',&10&)
insert&into&tb&values('',&'牙膏',&20&)
insert&into&tb&values('',&'被子',&10&)
--创建一个合并的函数
create&function&f_hb(@日期&datetime)
returns&varchar(8000)
&declare&@str&varchar(8000)
&set&@str&=&''
&select&@str&=&@str&+&cast(货物&as&varchar)&from&tb&where&日期&=&@日期&
&set&@str&=&right(@str&,&len(@str))
&return(@str)
--调用自定义函数得到结果:
select&distinct&日期&,dbo.f_hb(日期)&as&货物&from&tb
日期&&&&&&&&&&&&&&&&&&&&货物&
-----------------------&------
&00:00:00.000&牙膏
&00:00:00.000&牙膏
&00:00:00.000&牙膏被子
(所影响的行数为&3&行)
select&distinct&''&日期,dbo.f_hb('')&as&货物&from&tb
日期&&&&&&&货物&
----------&--------
(所影响的行数为&1&行)
drop&table&tb
drop&function&f_hbcreate&table&t([user_name]&varchar(16),role_name&varchar(30))
insert&into&t&VALUES('系统管理员','管理员')&
insert&into&t&VALUES('feng','管理员')&
insert&into&t&VALUES('feng','一般用户')&
insert&into&t&VALUES('test','一般用户')
select&*&from&t&
create&function&f_str(@user_name&varchar(50))
returns&varchar(500)
&&&&declare&@ret&varchar(500)
&&&&set&@ret&=&''
&&&&select&@ret&=&@ret+','+role_name&from&t&where&_name
&&&&set&@ret&=&stuff(@ret,1,1,'')
&&&&return&@ret
select&user_name,role_name=dbo.f_str(user_name)&from&t&group&by&user_name
drop&function&f_str
drop&table&t
user_name&&&&&&&&role_name&&&&&&&&&&&&
----------------&
feng&&&&&&&&&&&&&管理员,一般用户
test&&&&&&&&&&&&&一般用户
系统管理员&&&&&&&&&&&&管理员
(所影响的行数为&3&行
*/引用&3&楼&sdhylj&的回复:SQL&codecreatefunctionf_1(@datedatetime)(日期datetime,货物varchar(200)),*fromdbo.f_1(2)godropfunctionf_1go
偶忘了改了,调用如下
select&*&fromdbo.f_1('')
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:sql server 数据库题目 - suntanyong88的专栏 - CSDN博客
sql server 数据库题目
sql server
题目2:显示考试安排有冲突的考生及考试课程和时间
所谓有冲突,就是指一个考生同一时间(或考试时间有交集)安排了两门及两门以上的考试
表1:课程表 TC
cid& 课程id
cname& 课程名
Ctype& 考试方式
表2:考试表TE
eId& 考试id
cid& 课程id
beginTime& 开始时间
endTime& 结束时间
表3:考试安排表TSE
studentId& 学生id
examId& 考试id
显示各门课程的考场数目和可容纳的考生
各数据表结构如下:
表1:课程表 TC
cid& 课程id
cname& 课程名
Ctype& 考试方式
表2:考场表 TR
Roomed& 考场id
address& 考场地址
Contain& 容纳人数
表3:考场课程对应表 TCR
cid& 课程id
roomId& 考场id
ame,t.roomid,count(*) 考场数目,sum(cast(tr.Contain as int)) 人数& from tcr t,tr,tc where t.roomid=tr.Roomed and tc.cid=t.cid group by t.cid,t.ame
有3张表,分别为
&&& student学生表: sid(学号,number),sname(姓名,varchar2);
&&& class课程表:cid(课程号,number),cname(课程名称,varchar2);
&&& score成绩表: sid,cid,score(成绩,number),remark(备注,varchar2)。
请写出SQL语句:
&&& A、查询成绩大于90分的学生姓名及课程名称;
&&& B、将成绩表中成绩介于70-80的记录的remark字段更新为“良”;
&&& C、将成绩表中sid未曾在student或cid未曾在class表出现过的记录删除;
设tb表如下:
name subject grade
mike math 79
lee chinese 81
lee math 78
tom chinese 85
tom math 81
tom english 88
查询所有科目分数都在80分(含)以上的学生姓名
select distinct name
from stumessage& k
where not exists(select name from stumessage where k.name=name group by name having min(grade)&=80)
select [name] from stumessage& group by [name] having min(grade)&80
我的热门文章
即使是一小步也想与你分享SQL Server 基础练习题及答案_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
SQL Server 基础练习题及答案
上传于|0|0|文档简介
&&SQL语句练习基础题目及答案
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩7页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢SQLServer&常见SQL笔试题之语句操作题详解&Part1
常见SQL笔试题之语句操作题详解
测试数据库
DATABASE handWriting
name = 'bishi',
fileName = 'E:\数据库\bishi.mbf',
size = 5MB,
maxSize = 30MB,
fileGrowth = 10%
name = 'bishilog',
fileName = 'E:\数据库\bishilog.ldf',
size = 5MB,
fileGrowth = 10%
职工(工号,姓名,性别,年龄,部门)(num,name,sex,age,departmentno)
wage工资(编号,工资金额)(ID,amount)
attend出勤(工号,工资编号,出勤率)(num,ID,attendance)
请根据要求,编写相应的SQL语句。
--写一个SQL语句,查询工资金额为8000的职工工号和姓名。
分析:多表查询(3表或以上),先对第一个和第二个表按照两表连接做查询,然后用查询结果和第三个表做连接查询,以此类推,直到所有的表都连接上为止,最终形成一个中间的结果表,然后根据WHERE条件过滤中间表的记录,并根据SELECT
指定的列返回查询结果。
&name,employee.num
FROM &employee, wage,
employee.num = attend.num
and attend.ID =
wage.ID and wage.amount
--写一个SQL语句,查询职工张三的出勤率
分析:只涉及到两张表。。如下
&attendance
FROM &attend, employee
attend.num = employee.num
AND employee.name =
--WHERE num = (SELECT &num FROM &employee WHERE
employee.name = '张三')
--写一个SQL语句,查询3次出勤率为0的职工姓名和工号【常见题目】
分析:设计到两张表,相关子查询,employee表中每给出一个工号,就去全表扫描attend表,先在表attend中查找满足WHERE条件的记录,然后对结果进行分组,再过滤出勤率为0的,对每一个num,虚表都有值,那么exists
虚表返回true,把结果放入结果集表中,然后再指向下一个记录,给定一个num重复。。。。
num FROM &employee
FROM &attend
employee.num = attend.num
and attendance = 0
BY num HAVING COUNT(*)
--写一个SQL语句,查询出勤率为10并且工资金额小于2500的职工信息。[常见题目]
分析:不可行的思路:职工信息在表employee,工资在表wage,出勤率在表attend中,工资表只和出勤表相关联,先从表attend和表wage选出满足条件的结果集,再通过num和表employee相关联
FROM &employee,(
FROM &attend, wage
attendance = 10 AND attend.ID
= wage.ID and amount
&&/span& 2500) A
employee.num = A.num
说明:多次为'A'
指定了列'ID'&&
,这种方法不可行,字段太多,会同名,要全部写出来。。
思路二:多表连接,【一般这种做法错不了,具有普遍性】,num的选择,来自attend中num集合,ID来自满足条件的集合
FROM &employee
FROM &attend
attendance = 10 and ID IN(
FROM &wage
amount &&/span& 2500))
为管理岗位业务培训信息,建立个表:
(S#,SN,SD,SA) S#,SN,SD,SA
分别代表学号、学员姓名、所属单位、学员年龄
(C#,CN ) C#,CN
分别代表课程编号、课程名称
( S#,C#,G ) S#,C#,G
分别代表学号、所选修的课程编号、学习成绩
使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位【常见题目】
错误做法如下,
&sn, sd FROM
s.s# = sc.s#
and c.c# =
说明:先装载s表,然后,指针p1指向第一个记录了,然后装载c表,指针p2指向第一个记录,
然后装载sc表,进行全sc表扫描,指针指向第一个记录,然后查询满足WHERE的记录,如果找到记录(不管一条还是多条),则内层中的EXISTS虚表返回值为真,执行SELECT
&C,把结果放入虚表中,显然虚表中有数据,外层EXISTS
虚表为真,然后把sn,sd放入最终结果表,这不说明他选了全部课程,只能说明他至少选了一门课程
正确做法:语义上:查询这样的学生,他没有选的课程不存在。--双重否定
对每个学生,去课程表中查找没被他选修的课程,结果找不到数据。
SELECT sn, sd
WHERE NOT EXISTS
SELECT * FROM c
WHERE NOT EXISTS
SELECT * FROM sc
WHERE s.s# = sc.s# and sc.c# = c.c#
--以下子查询即为查找他没选修的课程
SELECT * FROM c
WHERE NOT EXISTS
SELECT * FROM sc
WHERE s.s# = sc.s# and sc.c# = c.c#
--查询选修了课程的学员人数【常见题目】
分析:选修课中去掉重复的学员号s#,剩下的记录个数就表示人数
&学员人数=
COUNT(DISTINCT
s#) FROM &SC
--查询选修课程超过5门的学员学号和所属单位【常见题目】
分析:同一个学生(分组使相同值的学号放在一组),选修课程超过5门(该组的记录个数超过5个)
(HAVING提出要求,记录个数用count实现);
先从sc表中查找,然后分组,选择记录大于5的,然后再从s表查找,条件是学生号在刚才那个sc表查询结果集中。
&sn, sd FROM
COUNT(DISTINCT
注意:如果仅是group
by,不带having语句,那么针对每个分组仅会产生一条记录,如果使用having语句则会产生1到n条记录,每条记录都必须满足having给定的条件。
--使用标准SQL嵌套语句查询选修课程名称为’税收基础’的学员学号和姓名
分析:三表c,sc,s
&s#,sn FROM
FROM &sc WHERE c# IN(
cn = '税收基础'))
使用标准SQL嵌套语句查询选修课程编号为2的学员姓名和所属单位
&s#,sd FROM
FROM &sc WHERE c# IN(
c# = '2'))
使用标准SQL嵌套语句查询不选修课程编号为’5’的学员姓名和所属单位
&s#,sd FROM
FROM &sc WHERE c# IN(
c# && '5'))
--用一条SQL语句查询出每门课都大于80分的学生姓名【常见题目】
分析:涉及选修表,学生表,对sc表里的每个s#,全表扫描他选修的成绩,都要大于80
语义:查找这样的学生,全表扫描他选修的成绩,不存在小于80的
&x.s# FROM
NOT EXISTS(
FROM &sc y
y.s# = x.s#
AND g &&/span& 80))
已知关系模式:
S1 (SNO,SNAME)
学生关系。SNO
为学号,SNAME
C1 (CNO,CNAME,CTEACHER)
课程关系。CNO
为课程号,CNAME
为课程名,CTEACHER
为任课教师
SC1(SNO,CNO,SCGRADE)
选课关系。SCGRADE
找出没有选修过“李明”老师讲授课程的所有学生姓名【常见题型】
法一:等值连接查询
FROM &S1,C1,
S1.SNO = SC1.SNO
AND S1.SNO =
AND C1.CTEACHER && '李明'
法二:和方法一一样的原理
SELECT &SNO FROM &SC1
WHERE CNO IN(
SELECT &CNO FROM &C1
WHERE CTEACHER && '李明'))
[错误做法]
NOT EXISTS(
SELECT &* FROM
WHERE NOT EXISTS(
SELECT &* FROM
WHERE CTEACHER = '李明'
AND S1.SNO =
SC1.SNO AND C1.CNO
= SC1.CNO ))
[正解如下]:
语义:查询这样的学生,不存在被李明老师讲且被他选修的课程。
SELECT &SNAME FROM &S1
&WHERE NOT EXISTS(
& SELECT &* FROM
WHERE EXISTS(
SELECT &* FROM
WHERE CTEACHER = '李明' AND
S1.SNO = SC1.SNO
AND C1.CNO =
SC1.CNO ))
--查找被李明老师讲且被选修课程
& SELECT &* FROM
WHERE EXISTS(
SELECT &* FROM
WHERE CTEACHER = '李明' AND
S1.SNO = SC1.SNO
AND C1.CNO =
SC1.CNO ))
列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩【常见题型】
语义:查询这样的学生的姓名及学生的平均成绩,选修课程至少有两名门不及格
培养解题习惯--&涉及表:姓名--S1表,成绩--SC1表,关联字段SNO,条件--同一个学生,两门或两门以上不及格,用到函数--VAG(),
条件WHERE,至少要有两门用COUNT,同一个同学,分组GROUP
假如这里没有要求查询平均成绩,那么可以如下
&S1.SNAME FROM
FROM &SC1 WHERE SC1.SNO
= S1.SNO AND
SC1.SCGRADE &&/span& 60
BY SC1.SNO HAVING
COUNT(*) &=
但是这里还要求平均成绩,我们可以这样,在上一步的基础上,把EXISTS子句中的语句提取出来的结果表给取个别名,然后,两表查询
&S1.SNAME,
A.AVGSCORE FROM &S1,
&SNO, AVG(SCGRADE)
AVGSCORE FROM &SC1
SCGRADE &&/span&
BY SC1.SNO HAVING
COUNT(*) &=
S1.SNO = A.SNO
列出既学过“1”号课程,又学过“2”号课程的所有学生姓名【常见题型】
FROM &S1,(
FROM &SC1&
S1.SNO = A.SNO
涉及表:选课表,学生表,从表中查找号课程或者号课程的学生,然后分组取同一个学生,然后选择记录数大于等于选两门的同学,然后再与学生表连接
CNO = 1 OR CNO =
HAVING COUNT(*)
&= 2)--注意这里要是只写等于,那么要是还选了其他课程的就
列出对同一学生,“1”号课成绩比“2”号课成绩高的所有学生的学号
分析:涉及表SC1,条件:同一个学生,号课程成绩比号课程成绩高,可以为该表起两个别名,然后联合查询,同一学生--》两表SNO相等,相关子查询,给定一个sno,一个cno,全表扫描另一个表,查找满足where的。。
&DISTINCT(X.SNO)
FROM &SC1 X --注意这里一定要加个DISTINCT
X.CNO = 1 AND
X.SCGRADE & (
FROM &SC1 Y
Y.SNO = X.SNO
AND Y.CNO =
列出“1”号课成绩比“2”号课成绩高的所有学生的学号及其“1”号课和“2”号课的成绩
分析:涉及表一张,先从同一样表中查找出1号课程,与2号课程的成绩,及选修人SNO,然后SNO相等,确定同一个人,然后再比较两表中学生的成绩。再从前面的结果查找学号。。。
SCORE1, SCORE2 FROM &(
&SNO,SCGRADE SCORE1 FROM &SC1
CNO = 1)A,&
&SNO, SCGRADE SCORE2 FROM &SC1
A.SNO = B.SNO
AND A.SCORE1 &
请查询出在ZD_ks中BM有重复的值及重复的次数,没有的不要列出。如下表:
 DUPCOUNT
采用SC1中的数据源
&SNO,COUNT(SNO)- 1
REPEAT FROM &SC1
BY SNO HAVING COUNT(*)
问题描述:
本题用到下面三个关系表:
T_CARD&&&&
卡号,NAME
姓名,CLASS
T_BOOKS&&&
书号,BNAME
书名,AUTHOR
作者,PRICE
单价,QUANTITY
T_BORROW&&
借书记录CNO
借书卡号,BNO
书号,RDATE
备注:限定每人每种书只能借一本;库存册数随借书、还书而改变。
--5.1.找出借书超过5本的读者,输出借书卡号及所借图书册数。
分析:涉及3表,而且输出字段不在同一表中,这种情况下用如下方式不错
NAME, CNO, QUANTITY FROM CARD,
T_BOOKS, T_BORROW
T_BOOKS.BNO = T_BORROW.BNO
BY NAME HAVING COUNT(*)&5
--5.2.查询借阅了"水浒"一书的读者,输出姓名及班级。
CLASS FROM &T_CARD
FROM &T_BORROW
FROM &T_BOOKS
BNAME = '水浒'))
--5.3.查询过期未还图书,输出借阅者(卡号)、书号及还书日期。
FROM &T_BORROW
REDATE &&/span& GETDATE();
--5.4.查询书名包括"网络"关键词的图书,输出书号、书名、作者。
&BNO, BNAME, AUTHOR
FROM &T_BOOKS
BNAME LIKE '%网络%';
--5.5.查询现有图书中价格最高的图书,输出书名及作者。
1 WITH TIES BNAME,
AUTHOR FROM &T_BOOKS ORDER BY PRICE
&BNAME, AUTHOR FROM
PRICE = (SELECT
&MAX(PRICE)
FROM &T_BOOKS)
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。sqlserver测试题及答案_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
sqlserver测试题及答案
上传于|0|0|暂无简介
阅读已结束,如果下载本文需要使用2下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩8页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 无人面条售卖机 的文章

 

随机推荐