Mysql|数据分析搞懂这15道SQL题目笔试就稳了

Mysql|数据分析搞懂这15道SQL题目笔试就稳了,第1张

现有以下三张表

写出SQL语句:查询产品名称=“A药品”,在北京医院2018~2019两年的销售“金额”,排除两年销售金额总和>1000000的医院,要求查询结果如下表。

写出SQL语句,查询题1的销量表中2019年任意连续三个月销售额都>0的医院。

返回字段:HospitalId,SalesMonth(2019年销量>0的所有月份,逗号隔开)

以下是微信聊天记录表

写出SQL语句:按月统计2020年的微信回复率

发送次数 = 一组好友在一个自然天内的所有发送记录计为1次。

回复率计算公式 =(发送次数在两个自然天内被回复)/发送次数*100%

未完。。。 持续更新中。。。

---1)

创建一张学生表,包含以下信息,学号,姓名,年龄,性别,家庭住址,联系电话

CREATE

TABLE

student

(

[id]

[int]

IDENTITY(1,1)

NOT

NULL,

[student_id]

[nvarchar](50)

NULL,

[studen_name]

[nvarchar](50)

NULL,

[age]

[int]

NULL

,

[sex]

[nvarchar](5)

NULL,

[address]

[nvarchar](200)

NULL,

[tel]

[nvarchar](20)

NULL

)

--2)

修改学生表的结构,添加一列信息,学历

education

alter

table

student

add

education

nvarchar(10)

NULL

--3)

修改学生表的结构,删除一列信息,家庭住址

alter

table

student

drop

column

address

--5)

修改学生表的数据,将电话号码以11开头的学员的学历改为“大专”

update

student

set

education='大专'

where

tel

like

'11%'

--6)

删除学生表的数据,姓名以C开头,性别为‘男’的记录删除

delete

student

where

studen_name

like

'C%'

and

sex='男'

--7)

查询学生表的数据,将所有年龄小于22岁的,学历为“大专”的,学生的姓名和学号示出来

select

studen_name,student_id

from

student

where

age<12

and

education='大专'

--8)

查询学生表的数据,查询所有信息,列出前25%的记录

select

TOP

25

PERCENT

*

from

student

--9)

查询出所有学生的姓名,性别,年龄降序排列

select

studen_name,sex,age

from

studen

order

by

age

desc

--10)

按照性别分组查询所有的平均年龄

select

avg(age)

as

age

from

studen

group

by

sex

--基础题

--1.查询读者最喜爱的3种图书分类号,即借阅表中出现最多的3类图书分类号

SELECT TOP 3 [分类号] FROM [图书] JOIN [借阅] ON [图书].[图书编号]=[借阅].[图书编号]

GROUP BY [分类号] ORDER BY COUNT(*) DESC

--附加题

--1.查询小于20岁的读者最喜欢的3类图书

SELECT TOP 3 [书名] FROM [读者] JOIN [借阅] ON [读者].[借书证号]=[借阅].[借书证号]

JOIN [图书] ON [图书].[图书编号]=[借阅].[图书编号]

WHERE [年龄]<20 GROUP BY [书名] ORDER BY COUNT(*) DESC

--2.查询至少借阅了 宁静 所借图书(书名相同)的人的姓名

SELECT [姓名] FROM [读者] WHERE [姓名]<>'宁静' AND [借书证号] IN(SELECT [借书证号] FROM [借阅]

WHERE [图书编号] IN(SELECT [图书编号] FROM [读者] JOIN [借阅] ON [读者].[借书证号]=[借阅].[借书证号] WHERE [姓名]='宁静'))

--3.查询借阅了多于3本书且每本书价均高于60的读者的借书证号

SELECT [借书证号]

FROM [借阅] JOIN [图书] ON [图书].[图书编号]=[借阅].[图书编号]

WHERE [单价]>60 GROUP BY [借书证号] HAVING COUNT(*)>3

GO

--4.假定读者表中所有人姓名均不多于4个汉字,请建立一个查询语句,要求根据名字中任意1个或两个或3个或4个汉字,即可找到该读者的详细信息(即完全模糊查询)

CREATE PROCEDURE CX

@XM VARCHAR(8) AS

IF LEN(@XM)=1 SELECT * FROM [读者] WHERE @XM LIKE '['+RTRIM([姓名])+']'

ELSE IF LEN(@XM)=2 SELECT * FROM [读者] WHERE LEFT(@XM,1) LIKE '['+RTRIM([姓名])+']' AND RIGHT(@XM,1) LIKE '['+RTRIM([姓名])+']'

ELSE IF LEN(@XM)=3 SELECT * FROM [读者] WHERE LEFT(@XM,1) LIKE '['+RTRIM([姓名])+']' AND SUBSTRING(@XM,2,1) LIKE '['+RTRIM([姓名])+']' AND RIGHT(@XM,1) LIKE '['+RTRIM([姓名])+']'

ELSE IF LEN(@XM)=4 SELECT * FROM [读者] WHERE LEFT(@XM,1) LIKE '['+RTRIM([姓名])+']' AND SUBSTRING(@XM,2,1) LIKE '['+RTRIM([姓名])+']' AND SUBSTRING(@XM,3,1) LIKE '['+RTRIM([姓名])+']' AND RIGHT(@XM,1) LIKE '['+RTRIM([姓名])+']'

GO


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

原文地址: https://outofmemory.cn/sjk/6776090.html

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

发表评论

登录后才能评论

评论列表(0条)

保存