数据处理考核要求-SQL测试的答案

发布于:2025-06-18 ⋅ 阅读:(17) ⋅ 点赞:(0)

在一个团队中,有业务人员。如业务人员深入理解数据处理的内容,会大幅度增强相互配合的效率。

针对业务人员进行针对性培训,还是比较容易掌握SQL的数据处理。类似与大学里面开的一门选修课。数据集选择帆软的Demo数据集。

业务人员学会SQL的操作之后,可以执行报表制作,SPL数据分析,可视化分析等内容。可充分发挥业务人员的价值

然后下面是题目及答案

-- 1 请查询产品库存量>20的所有产品,输出产品ID,产品名称和库存量

select 产品ID,产品名称,库存量 from `产品` where 库存量>20

-- 2 请查询天津和重庆两个城市的供应商,输出供应商ID,公司名称,联系人姓名和电话

select 供应商ID,公司名称,联系人姓名,电话 from `供应商` where 城市 in ('天津','重庆')

-- 3 请查询产品名称中不是以奶酪结尾的产品

select * from 产品 where  产品名称 not like '%奶酪'

-- 4 请查询订购日期在1996-07-04和1996-07-20之间的所有订单,输出订单ID,订购日期,货主名称和货主地址

select 订单ID,订购日期,货主名称,货主地址 from `订单` where 订购日期 between '1996-07-04' and '1996-07-20'

-- 5  请查询产品名称中包含"酱"的所有产品,输出产品名称,单价,单位数量

select 产品名称,单价,单位数量   from `产品` where 产品名称 like '%酱%'

-- 6 请查询货主地区不等于华北,而且运货费大于50的订单,输出订单ID,到货日期,货主名称和货主地址

select 订单ID,到货日期,货主名称,货主地址 from `订单` where 货主地区<>'华北' and 运货费>50

-- 7 请查询订单表中发货日期为空的所有货主城市,并去除重复项

select DISTINCT 货主城市 from `订单` where 发货日期 is null

-- 8 请查询年龄>50的雇员,提示MYSQL中函数now()返回当前时间和DATEDIFF(date1,date2)可以计算两个日期之间的相差天数)

select * from 雇员 where DATEDIFF(now(),出生日期)/365>50

-- 9 请统计出不同货主城市的订单数量,输出货主城市,订单数量,并按照订单数量降序排序

select 货主城市,count(*) as 订单数量 from 订单 group by 货主城市 order by 订单数量  desc

-- 10 请查询所有类别名称等于饮料的所有产品,输出类别名称, 产品名称,单价,库存量

select b.类别名称, a.产品名称,a.单价,a.库存量 from `产品` a inner join `类别` b on a.类别ID=b.类别ID and b.类别名称='饮料'

-- 11 请按照产品类别进行分组,统计出饮料和点心的产品数量和库存数量,输出产品类别名称,产品数量,库存数量

select b.类别名称, count(a.产品ID),sum(a.库存量)

 from `产品` a inner join `类别` b on a.类别ID=b.类别ID and b.类别名称 in ('饮料','点心')

group by  b.类别名称

-- 12 请查询订单ID=10248的订单,并关联其客户信息和雇员信息,输出订单ID,雇员ID,客户ID,雇员名字,客户公司名称

select a.订单ID,a.雇员ID,a.客户ID,c.名字,b.公司名称  from `订单` a

left join `客户`  b on a.客户ID=b.客户ID

left join `雇员` c  on a.雇员ID=c.雇员ID

where a.订单ID=10248

-- 13 请查询产品类别是1和2的产品,并关联其所有订单,输出产品ID,产品名称,单价,订单ID,订购日期,货主名称,货主地址

select a.产品ID,a.产品名称,a.单价,b.订单ID,c.订购日期,c.货主名称,c.货主地址

from `产品` a  left join 订单明细 b on a.产品ID = b.产品ID

left join 订单 c on b.订单ID=c.订单ID

where a.类别ID in (1,2)

-- 14 请查询客户公司名称是三川实业有限公司的订单总金额(单价*数量*(1-折扣))

select sum(c.单价*c.数量*(1-c.折扣))

from 客户 a

left join 订单 b on a.客户ID = b.客户ID

left join 订单明细 c on b.订单ID = c.订单ID

where a.公司名称='三川实业有限公司'

-- 15 请统计蛋糕这个产品,1998年的销量

select sum(数量)

from 产品 a

left join 订单明细 b on a.产品ID=b.产品ID

left join 订单 c on c.订单ID=b.订单ID

where a.`产品名称`='蛋糕' and

c.订购日期 >= '1998-01-01' and c.订购日期<= '1998-12-31'

-- 16 请统计每个雇员的累计销售业绩,销售数量和销售金额,并按照销售金额降序排序

select concat(a.姓氏,a.名字) as name,sum(c.数量) AS 销售数量,sum(c.单价*c.数量) as 销售金额

from 雇员 a

left join 订单 b  on a.雇员ID=b.雇员ID

left join 订单明细  c  on b.订单ID=c.订单ID

group by name order by 销售金额 desc

-- 17 请统计1998年销售量为0的产品,输出产品名称,单价,库存量

select 产品名称,单价,库存量 from `产品` a

where not exists (

select 1 from 订单 b, `订单明细` c

where b.`订单ID`=c.订单ID and b.订购日期 >= '1998-01-01' and b.订购日期<= '1998-12-31' and c.产品ID=a.产品ID

)

-- 18 请从订单信息中,统计出1996年的订单中,给每个运货商支付的运货费用。输出运货商公司名称和累计运货费用

select b.`公司名称`,sum(a.`运货费`)

 from `订单` a left join `运货商`  b on a.`运货商`=b.`运货商ID`

where a.`订购日期` >='1996-01-01' and a.`订购日期` <='1996-12-31'

group by b.`公司名称`

-- 19 请查询出当前产品中前5个库存量最大的产品,输出产品名称,库存量(使用MYSQL limit 可以限定取出数据的行数)

 select `产品名称`,`库存量` from `产品`  order by `库存量` desc limit 0,5

 --20 请从订单表中统计出1996年,每个月的销售量和销售额,输出月份,销售量和销售额 (提示:销售额是订单明细中单价*数量*(1-折扣),mysql中date_format函数可以获取月份信息,如DATE_FORMAT(订购日期,'%Y-%m'))

select DATE_FORMAT(订购日期,'%Y-%m'),sum(b.`数量`),sum(b.`单价`*(1-b.`折扣`)*b.`数量`) from 订单 a left join 订单明细 b on a.`订单ID`=b.`订单ID`

where a.`订购日期` >='1996-01-01' and a.`订购日期` <='1996-12-31'

group by DATE_FORMAT(订购日期,'%Y-%m')


网站公告

今日签到

点亮在社区的每一天
去签到