牛客网在线编程_SQL篇_SQL必知必会(前25题)

 后端学习记录(第一天)(2025.1.13)

简单过一遍牛客网SQL语句的必知必会(前25题)

牛客网SQL必知必会链接:

牛客网在线编程_SQL篇_SQL必知必会

下面的解题代码供参考:

1.SQL60 从 Customers 表中检索所有的 ID

题目一描述

现有表Customers如下:

cust_id

A

B
C

【问题】

编写 SQL 语句,从 Customers 表中检索所有的cust_id

【示例答案】

返回cust_id列的内容

cust_id

A

B
C

 代码:

select

    cust_id

from

    Customers;

2.SQL61 检索并列出已订购产品的清单

题目二描述

表OrderItems含有非空的列prod_id代表商品id,包含了所有已订购的商品(有些已被订购多次)。

prod_id

a1

a2
a3
a4
a5
a6
a6

【问题】编写SQL 语句,检索并列出所有已订购商品(prod_id)的去重后的清单。

代码: 

select

    prod_id

from

    OrderItems

group by prod_id;

3.SQL62 检索所有列

题目三描述

现在有Customers 表(表中含有列cust_id代表客户id,cust_name代表客户姓名)

cust_idcust_name

a1

andy
a2ben
a3tony
a4tom
a5an
a6lee
a7hex

【问题】需要编写 SQL语句,检索所有列。

【示例结果】

返回所有列cust_id和cust_name。

cust_idcust_name

a1

andy
a2ben
a3tony
a4tom
a5an
a6lee
a7hex

代码:

select

    cust_id, cust_name

FROM

    Customers;

4.SQL63 检索顾客名称并且排序

题目四描述

有表Customers,cust_id代表客户id,cust_name代表客户姓名。

cust_idcust_name

a1

andy
a2ben
a3tony
a4tom
a5an
a6lee
a7hex

【问题】从 Customers 中检索所有的顾客名称(cust_name),并按从 Z 到 A 的顺序显示结果。

【示例结果】返回客户姓名cust_name

cust_name
tony
tom
lee
hex
ben
andy
an

 代码:

select  

    cust_name

from

    Customers

order by

    cust_name desc;

5.SQL64 对顾客ID和日期排序

题目五描述

有Orders表

cust_idorder_numorder_date
andyaaaa2021-01-01 00:00:00
andybbbb2021-01-01 12:00:00
bobcccc2021-01-10 12:00:00
dickdddd2021-01-11 00:00:00

【问题】编写 SQL 语句,从 Orders 表中检索顾客 ID(cust_id)和订单号(order_num),并先按顾客 ID 对结果进行正序排序,ID相同的情况下,再按订单日期倒序排列。

【示例答案】

返回2列,cust_id和order_num

cust_idorder_num
andybbbb
andyaaaa
bobcccc
dickdddd

【示例解析】

首先根据cust_id进行排列,andy在bob和dick前,再根据order_date进行排列,订单号bbbb的订单时间是 "2021-01-01 12:00:00"大于订单号aaaa的时间"2021-01-01 00:00:00"

代码:

select

    cust_id,order_num

from

    Orders

order by    

    cust_id,    

    order_date desc;

6.SQL65 按照数量和价格排序

题目六描述

假设有一个OrderItems表

quantityitem_price
1100
101003
2500

【问题】

编写 SQL 语句,显示 OrderItems 表中的数量(quantity)和价格(item_price),并按数量由多到少、价格由高到低排序。

【示例答案】

返回quantity和item_price

代码:

 select

    quantity,

    item_price

from

    OrderItems

order by

    quantity desc,

    item_price desc;

7.SQL66 检查SQL语句

题目七描述

有Vendors表

vend_name
海底捞
小龙坎
大龙燚

【问题】下面的 SQL 语句有问题吗?尝试将它改正确,使之能够正确运行,并且返回结果根据vend_name逆序排列

SELECT vend_name, 
FROM Vendors 
ORDER vend_name DESC;

【示例展示】

返回vend_name

vend_name
海底捞
小龙坎
大龙燚

代码:

SELECT

    vend_name

FROM

    Vendors

order by

    vend_name desc;

8.SQL67 返回固定价格的产品

题目八描述

有表Products

prod_idprod_nameprod_price
a0018sockets9.49
a0019iphone13600
b0018gucci t-shirts1000

【问题】从 Products 表中检索产品 ID(prod_id)和产品名称(prod_name),只返回价格为 9.49 美元的产品。

【示例结果】返回prod_id和prod_name

prod_idprod_name
a0018sockets

select

    prod_id,prod_name

from

    Products

where

    prod_price='9.49';

9.SQL68 返回更高价格的产品

题目九描述

Products 表

prod_idprod_nameprod_price
a0018sockets9.49
a0019iphone13600
b0019gucci t-shirts1000

【问题】编写 SQL 语句,从 Products 表中检索产品 ID(prod_id)和产品名称(prod_name),只返回价格为 9 美元或更高的产品。

【示例答案】返回prod_id商品id和prod_name商品名称

prod_idprod_name
a0018sockets
a0019iphone13
b0019gucci t-shirts

代码:

select

    prod_id,prod_name

from

    Products

where

    prod_price>='9';

10.SQL69 返回产品并且按照价格排序

题目十描述

有Products 表

prod_idprod_nameprod_price
a0011egg3
a0019sockets4
b0019coffee15

【问题】编写 SQL 语句,返回 Products 表中所有价格在 3 美元到 6 美元之间的产品的名称(prod_name)和价格(prod_price),然后按价格对结果进行排序

【示例结果】返回商品名称prod_name和商品价格prod_price

prod_nameprod_price
egg3
sockets4

注:不需要考虑商品价格相同的情况

代码:

select

    prod_name,prod_price

from

    Products

where '3'<=prod_price and prod_price<='6'

order by

    prod_price asc;

11.SQL70 返回更多的产品

题目十一描述

OrderItems表含有:订单号order_num,quantity产品数量

order_numquantity
a1105
a21100
a2200
a41121
a510
a219
a75

【问题】从OrderItems表中检索出不重复的订单号(order_num),其中每个订单都要包含 100 个或更多的产品。

【示例结果】返回订单号列order_num

order_num
a1
a2
a4

代码:

select DISTINCT

    order_num

from

    OrderItems

where

    quantity>=100;

12.SQL71 检索供应商名称

题目十二描述

Vendors表有字段供应商名称(vend_name)、供应商国家(vend_country)、供应商州(vend_state)

vend_namevend_countryvend_state
appleUSACA
vivoCNAshenzhen
huaweiCNAxian

【问题】编写 SQL 语句,从 Vendors 表中检索供应商名称(vend_name),仅返回加利福尼亚州的供应商(这需要按国家[USA]和州[CA]进行过滤,没准其他国家也存在一个CA)

【示例答案】返回供应商名称vend_name

vend_name
apple

 代码:

select

    vend_name

from

    Vendors

where

    vend_country = 'USA' and vend_state='CA';

13.SQL72 检索并列出已订购产品的清单

题目十三描述

OrderItems 表包含了所有已订购的产品(有些已被订购多次)。

prod_idorder_numquantity
BR01a1105
BR02a21100
BR02a2200
BR03a41121
BR017a510
BR02a219
BR017a75

【问题】编写SQL 语句,查找所有订购了数量至少100 个的 BR01、BR02 或BR03 的订单。你需要返回 OrderItems 表的订单号(order_num)、产品 ID(prod_id)和数量(quantity),并按产品 ID 和数量进行过滤。
【示例答案】返回商品id prod_id、订单order_num、数量quantity。

order_numprod_idquantity
a1BR01105
a2BR021100
a2BR02200
a4BR031121

【示例解析】

返回的结果中,数量满足大于等于100,且满足prod_id 是"BR01",“BR02”,“BR03"中的任意一个。

代码:

select

    order_num,prod_id,quantity

from

    OrderItems

where

    quantity>='100';

14.SQL73 返回所有价格在 3美元到 6美元之间的产品的名称和价格

题目十四描述

有表Products

prod_idprod_nameprod_price
a0011egg3
a0019sockets4
b0019coffee15

【问题】编写 SQL 语句,返回所有价格在 3美元到 6美元之间的产品的名称(prod_name)和价格(prod_price),使用 AND操作符,然后按价格对结果进行升序排序

【示例结果】

返回商品名称prod_name和商品价格prod_price

prod_nameprod_price
egg3
sockets4

注:不需要考虑价格相同时的排序问题

代码:

select

    prod_name,prod_price

from

    Products

where

    prod_price>=3 and prod_price<=6

order by  

    prod_price asc;

 15.SQL74 纠错2

题目十五描述

供应商表Vendors有字段供应商名称vend_name、供应商国家vend_country、供应商省份vend_state

vend_namevend_countryvend_state
appleUSACA
vivoCNAshenzhen
huaweiCNAxian

【问题】修改正确下面sql,使之正确返回

SELECT vend_name 
FROM Vendors 
ORDER BY vend_name 
WHERE vend_country = 'USA' AND vend_state = 'CA';

【示例结果】

结果返回vend_name

vend_name
apple

代码:

SELECT vend_name

FROM Vendors

WHERE vend_country = 'USA' AND vend_state = 'CA'

ORDER BY vend_name ;

16.SQL75 检索产品名称和描述(一)

题目十六描述

Products表

prod_nameprod_desc
a0011usb
a0019iphone13
b0019gucci t-shirts
c0019gucci toy
d0019lego toy

【问题】编写 SQL 语句,从 Products 表中检索产品名称(prod_name)和描述(prod_desc),仅返回描述中包含 toy 一词的产品名称

【示例结果】返回产品名称和产品描述

prod_nameprod_desc
c0019gucci toy
d0019lego toy

 代码:

select

    prod_name,prod_desc

from

    Products

where

    prod_desc like '%toy%';

17.SQL76 检索产品名称和描述(二)

题目十七描述

Products表

prod_nameprod_desc
a0011usb
a0019iphone13
b0019gucci t-shirts
c0019gucci toy
d0019lego toy

【问题】编写 SQL 语句,从 Products 表中检索产品名称(prod_name)和描述(prod_desc),仅返回描述中未出现 toy 一词的产品,最后按”产品名称“对结果进行排序。

【示例结果】返回产品名称和产品描述

prod_nameprod_desc
a0011usb
a0019iphone13
b0019gucci t-shirts

代码:

select

    prod_name,prod_desc

from

    Products

where

    prod_desc not like "%toy%"

order by

    prod_name asc;

18.SQL77 检索产品名称和描述(三)

题目十八描述

Products表

【问题】编写 SQL 语句,从 Products 表中检索产品名称(prod_name)和描述(prod_desc),仅返回描述中同时出现 toy 和 carrots 的产品。有好几种方法可以执行此操作,但对于这个挑战题,请使用 AND 和两个 LIKE 比较。

prod_nameprod_desc
a0011usb
a0019iphone13
b0019gucci t-shirts
c0019gucci toy
d0019lego carrots toy

【示例结果】返回产品名称和产品描述

prod_nameprod_desc
d0019lego carrots toy

代码:

select

    prod_name,prod_desc

from

    Products

where

    prod_desc like "%toy%" and

    prod_desc like "%carrots%";

19.SQL78 检索产品名称和描述(四)

题目十九描述

Products表

prod_nameprod_desc
a0011usb
a0019iphone13
b0019gucci t-shirts
c0019gucci toy
d0019lego toy carrots

【问题】编写 SQL 语句,从 Products 表中检索产品名称(prod_name)和描述(prod_desc),仅返回在描述中以先后顺序同时出现 toy 和 carrots 的产品。提示:只需要用带有三个 % 符号的 LIKE 即可。

【示例结果】返回产品名称和产品描述

prod_nameprod_desc
d0019lego toy carrots

代码:

select

    prod_name,prod_desc

from

    Products

where

    prod_desc like "%toy%carrots%";

20.SQL79 别名

题目二十描述

别名的常见用法是在检索出的结果中重命名表的列字段(为了符合特定的报表要求或客户需求)。有表Vendors代表供应商信息,vend_id供应商id、vend_name供应商名称、vend_address供应商地址、vend_city供应商城市。

vend_idvend_namevend_addressvend_city
a001tencent cloudaddress1shenzhen
a002huawei cloudaddress2dongguan
a003aliyun cloudaddress3hangzhou
a003netease cloudaddress4guangzhou

【问题】编写 SQL 语句,从 Vendors 表中检索vend_id、vend_name、vend_address 和 vend_city,将 vend_name重命名为 vname,将 vend_city 重命名为 vcity,将 vend_address重命名为 vaddress,按供应商名称对结果进行升序排序。

【示例结果】返回vend_id 供应商id、vname 供应商名称、vaddress供应商地址、vcity供应商城市。

vend_idvnamevaddressvcity
a003aliyun cloudaddress3hangzhou
a002huawei cloudaddress2dongguan
a003netease cloudaddress4guangzhou
a001tencent cloudaddress1shenzhen

代码:

select

    vend_id,vend_name vname,vend_address vaddress,vend_city vcity

from

    Vendors

order by

    vname asc;

21.SQL80 打折

题目二十一描述

我们的示例商店正在进行打折促销,所有产品均降价 10%。Products表包含prod_id产品id、prod_price产品价格

【问题】编写 SQL语句,从 Products 表中返回 prod_id、prod_price 和 sale_price。sale_price 是一个包含促销价格的计算字段。提示:可以乘以 0.9,得到原价的 90%(即 10%的折扣)

【示例结果】

返回产品id prod_id、产品价格prod_price、销售价格 sale_price

prod_idprod_pricesale_price
a00119.498.541
a0019600540
b00191000900

【示例解析】sale_price的价格是prod_price的90%

代码:

select

    prod_id,prod_price,prod_price * 0.9 sale_price

from    

    Products;

22.SQL81 顾客登录名

题目二十二描述

我们的商店已经上线了,正在创建顾客账户。所有用户都需要登录名,默认登录名是其名称和所在城市的组合。

给出 Customers表 如下:

cust_idcust_namecust_contactcust_city
a1Andy LiAndy LiOak Park
a2Ben LiuBen LiuOak Park
a3Tony DaiTony DaiOak Park
a4Tom ChenTom ChenOak Park
a5An LiAn LiOak Park
a6Lee ChenLee ChenOak Park
a7Hex LiuHex LiuOak Park

【问题】编写 SQL 语句,返回顾客 ID(cust_id)、顾客名称(cust_name)和登录名(user_login),其中登录名全部为大写字母,并由顾客联系人的前两个字符(cust_contact)和其所在城市的前三个字符(cust_city)组成。提示:需要使用函数、拼接和别名。

【示例结果】

返回顾客id cust_id,顾客名称cust_name,顾客登录名 user_login

cust_idcust_nameuser_login
a1Andy LiANOAK
a2Ben LiuBEOAK
a3Tony DaiTOOAK
a4Tom ChenTOOAK
a5An LiANOAK
a6Lee ChenLEOAK
a7Hex LiuHEOAK

【示例解析】

例如,登录名是 ANOAK(Andy Li,居住在 Oak Park)

代码:

select

        cust_id,cust_name,

        upper(concat(substring(cust_name,1,2),substring(cust_city,1,3))) as user_login

from Customers

23.SQL82 返回 2020 年 1 月的所有订单的订单号和订单日期

题目二十三描述

Orders订单表

order_numorder_date
a00012020-01-01 00:00:00
a00022020-01-02 00:00:00
a00032020-01-01 12:00:00
a00042020-02-01 00:00:00
a00052020-03-01 00:00:00

【问题】编写 SQL 语句,返回 2020 年 1 月的所有订单的订单号(order_num)和订单日期(order_date),并按订单日期升序排序

【示例结果】

返回订单号order_num,和order_date订单时间

order_numorder_date
a00012020-01-01 00:00:00
a00032020-01-01 12:00:00
a00022020-01-02 00:00:00

【示例解析】

a0001、a0002、a0003 时间属于2020年1月

代码:

select  

    order_num,order_date

from

    Orders

where

    order_date like "2020-01%"

order by    

    order_date asc;

24.SQL83 确定已售出产品的总数

题目二十四描述

OrderItems表代表售出的产品,quantity代表售出商品数量。

quantity
10
100
1000
10001
2
15

【问题】编写 SQL 语句,确定已售出产品的总数。

【示例结果】返回items_ordered列名,表示已售出商品的总数。

items_ordered
11128

代码: 

select

    sum(quantity) items_ordered

from OrderItems;

25.SQL84 确定已售出产品项 BR01 的总数

题目二十五描述

OrderItems表代表售出的产品,quantity代表售出商品数量,产品项为prod_item。

quantityprod_id
10AR01
100AR10
1000BR01
10001BR010

【问题】确定已售出产品项(prod_item)为"BR01"的总数。

【示例结果】返回商品项已订购订单数

items_ordered
1000

【示例解析】已订购商品BR01的数量quantity为1000。

 代码:

select

    sum(quantity) items_ordered

from

    OrderItems

where

    prod_id = "BR01";

牛客网在线编程_SQL篇_SQL必知必会(后25题)链接:

牛客网在线编程_SQL篇_SQL必知必会(后25题)-CSDN博客

 感谢阅读,祝各位朋友都能成为IT大牛!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值