乐趣区

关于sql:SQL-必知必会-50-题6-10

本文已同步至:村雨遥

SQL6 依照数量和价格排序

形容

假如有一个 OrderItems 表

quantity item_price
1 100
10 1003
2 500

问题

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

示例答案

返回 quantity 和 item_price

示例

DROP TABLE IF EXISTS `OrderItems`;
CREATE TABLE IF NOT EXISTS `OrderItems` (`quantity` INT(64) NOT NULL COMMENT '数量',
  `item_price` INT(64) NOT NULL COMMENT '订单价格'
);
INSERT INTO `OrderItems` VALUES (1,100),
(10,1003),
(2,500);

解答

同样是查问语句,要对查问后果进行排序,则须要应用 ORDER BY 关键字,最初则是须要留神是正序还是倒序,题目中由多到少和由高到低都是属于倒序,所以须要应用关键字 DESC

SELECT quantity, item_price FROM OrderItems ORDER BY quantity DESC, item_price DESC;

SQL7 查看 SQL 语句

形容

有 Vendors 表

vend_name
海底捞
小龙坎
大龙燚

问题

上面的 SQL 语句有问题吗?尝试将它改正确,使之可能正确运行,并且返回后果依据 vend_name 逆序排列

SELECT vend_name, 
FROM Vendors 
ORDER vend_name DESC;

示例展现

返回 vend_name

vend_name
海底捞
小龙坎
大龙燚

示例

DROP TABLE IF EXISTS `Vendors`;
CREATE TABLE IF NOT EXISTS `Vendors` (`vend_name` VARCHAR(255) NOT NULL COMMENT 'vend 名称'
);
INSERT INTO `Vendors` VALUES ('海底捞'),
('小龙坎'),
('大龙燚');

解答

SELECT vend_name, FROM Vendors ORDER vend_name DESC;

次要存在两处谬误,首先是选取须要展现的列 vend_name 后,前面并没有跟上须要展现的其余列,所以此处多了一个 ,。另外,对选取列进行排序应用的关键字是 ORDER BY,而题目中只是给出了 ORDER,遗记了 BY,所以会导致查问后果谬误。针对这两处谬误改过后,失去的正确的语句如下所示。

SELECT vend_name FROM Vendors ORDER BY vend_name DESC;

SQL8 返回固定价格的产品

形容

有表 Products

prod_id prod_name prod_price
a0018 sockets 9.49
a0019 iphone13 600
b0018 gucci t-shirts 1000

问题

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

示例后果

返回 prod_id 和 prod_name

prod_id prod_name
a0018 sockets

示例

DROP TABLE IF EXISTS `Products`;
CREATE TABLE IF NOT EXISTS `Products` (`prod_id` VARCHAR(255) NOT NULL COMMENT '产品 ID',
  `prod_name` VARCHAR(255) NOT NULL COMMENT '产品名称',
  `prod_price` DOUBLE NOT NULL COMMENT '产品价格'
);
INSERT INTO `Products` VALUES ('a0018','sockets',9.49),
('a0019','iphone13',600),
('b0019','gucci t-shirts',1000);

解答

查问合乎指定条件的数据,能够应用关键字 WHERE 对条件进行限度,而后就是对条件的实现,这里能够应用两种形式。

第一种,间接利用 =,既然条件是须要价格为 9.49 美元的产品,则咱们将价格列设置为 prod_price = 9.49 即可。

SELECT prod_id, prod_name FROM Products WHERE prod_price = 9.49;

第二种,除开 = 之外,咱们也能够应用 in,示意价格只有在指定的数据之中,咱们将价格列设置为 in (9.49) 即可,然而此时要留神不要疏忽 (),否则语句会报错。

SELECT prod_id, prod_name FROM Products WHERE prod_price in (9.49);

SQL9 返回更高价格的产品

形容

Products 表

prod_id prod_name prod_price
a0018 sockets 9.49
a0019 iphone13 600
b0019 gucci t-shirts 1000

问题

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

示例答案

返回 prod_id 商品 id 和 prod_name 商品名称

prod_id prod_name
a0018 sockets
a0019 iphone13
b0019 gucci t-shirts

示例

DROP TABLE IF EXISTS `Products`;
CREATE TABLE IF NOT EXISTS `Products` (`prod_id` VARCHAR(255) NOT NULL COMMENT '产品 ID',
`prod_name` VARCHAR(255) NOT NULL COMMENT '产品名称',
`prod_price` DOUBLE NOT NULL COMMENT '产品价格'
);
INSERT INTO `Products` VALUES ('a0011','usb',9.49),
('a0019','iphone13',600),
('b0019','gucci t-shirts',1000);

解答

条件查问语句,查问格局:

SELECT [列名] FROM [表名] WHERE 判断条件 …

既然判断条件是要产品价格不低于 9 美元,则产品须要大于等于 9 美元,能够将产品价格设置为 prod_price >= 9 即可。

SELECT prod_id, prod_name FROM Products WHERE prod_price >= 9;

此外,咱们还能够将 >= 拆分为两个条件,一个是 prod_price > 9,而另一个则是 prod_price = 9,而后满足任一条件即可,则利用关键字 OR 将两个条件进行连贯。

SELECT prod_id, prod_name FROM Products WHERE prod_price > 9 OR prod_price = 9;

SQL10 返回产品并且依照价格排序

形容

有 Products 表

prod_id prod_name prod_price
a0011 egg 3
a0019 sockets 4
b0019 coffee 15

问题

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

示例后果

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

prod_name prod_price
egg 3
sockets 4

注:不须要思考商品价格雷同的状况

示例

DROP TABLE IF EXISTS `Products`;
CREATE TABLE IF NOT EXISTS `Products` (`prod_id` VARCHAR(255) NOT NULL COMMENT '产品 ID',
`prod_name` VARCHAR(255) NOT NULL COMMENT '产品名称',
`prod_price` DOUBLE NOT NULL COMMENT '产品价格'
);
INSERT INTO `Products` VALUES ('a0011','egg',3),
('a0019','sockets',4),
('b0019','coffee',15);

解答

条件查问,通过将条件拆分为 prod_price >= 3prod_price <= 6 两个条件,而后利用关键字 AND 将两个条件串联起来,同时满足两个条件的数据则进行输入。而后要对价格进行排序,则能够应用关键字 ORDER BY

SELECT prod_name, prod_price FROM Products WHERE prod_price >= 3 AND prod_price <=6 ORDER BY prod_price;

除开上述将两个条件拆离开而后利用关键字 AND 串联起来之外,其实 SQL 还提供了关键字 BETWEEN … AND …,能够将满足介于两者之间的数进行筛选输入。

SELECT prod_name, prod_price FROM Products WHERE prod_price BETWEEN 3 AND 6 ORDER BY prod_price;

致谢

感激牛客网提供的题目列表。

退出移动版