sql order by 降序_数据分析之SQL(2)

从今天起,正式开始学习数据分析相关的知识,希望在未来可以找到一份优秀的Offer,也希望我可以努力成为那个优秀的他。话不多说,首先开始我们的SQL语言学习。

第三课 排序检索数据

排序数据

为了明确排序用SELECT语句检索出的数据,可使用ORDER BY子句。ORDER BY子句取一个或多个列的名字,据此对输出进行排序。

SELECT `prod_name`
FROM `products`
ORDER BY `prod_name`;

fdf316ff39ff73d6ccbe25de460c64d7.png

【注】通常,ORDER BY子句中使用的列将是为显示而选择的列,但是实际上并不一定这样,用非检索的列排序数据是完全合法的。

按多个列排序

多个列排序时,先按第一个列进行排序,依次按照后面的列排序。

SELECT `prod_id`, `prod_price`, `prod_name`
FROM `products`
ORDER BY `prod_price`, `prod_name`;

0ea24d53527c4ff9ed3fb0b412cf5fa9.png

按列位置排序

除了能用列名指出排序顺序外,ORDER BY还支持按相对列位置进行排序。

SELECT `prod_id`, `prod_price`, `prod_name`
FROM `products`
ORDER BY 2,3;

【注】当根据不出现在SELECT清单中的列进行排序时,不能采用这项方法。

指定排序方向

ASC指示升序,DESC指示降序。

SELECT `prod_id`, `prod_price`, `prod_name`
FROM `products`
ORDER BY `prod_price` DESC, `prod_name`;

dbe695c79e2abe662e68f18a7c3ddc44.png

挑战题

  • 编写 SQL 语句,从 Customers 中检索所有的顾客名称(cust_name), 并按从 Z 到 A 的顺序显示结果。
SELECT `cust_name` 
FROM `customers`
ORDER BY `cust_name` DESC;
  • 编写 SQL 语句,从 Orders 表中检索顾客 ID(cust_id)和订单号 (order_num),并先按顾客 ID 对结果进行排序,再按订单日期倒序排列。
SELECT `cust_id`, `order_num`
FROM `orders`
ORDER BY `cust_id`, `order_date` DESC;
  • 显然,我们的虚拟商店更喜欢出售比较贵的物品,而且这类物品有很多。 编写 SQL 语句,显示 OrderItems 表中的数量和价格(item_price), 并按数量由多到少、价格由高到低排序。
SELECT `quantity`, `item_price` 
FROM `orderItems` 
ORDER BY `quantity` DESC, `item_price` DESC;

第四课 过滤数据

使用WHERE子句

数据库表一般包含大量的数据,很少需要检索表中的所有行。通常只会根据特定操作或报告的需要提取表数据的子集。只检索所需数据需要指定搜索条件,搜索条件也被称为过滤条件。在SELECT语句中,数据根据WHERE子句中指定的搜索条件进行过滤。

SELECT `prod_name`, `prod_price`
FROM `products`
WHERE `prod_price` = 3.49;

512439f7d1fc144927ed1f15225bf126.png

WHERE子句操作符

“=”等于 “!=”不等于 “<”小于 “>”大于 “<=”小于等于 “>=”大于等于 BETWEEN...AND...在指定的两个值之间。

SELECT `prod_name`, `prod_price`
FROM `products`
WHERE `prod_price` < 10;

40406ea01d72ce26c8b0142b4b899f3a.png
SELECT `vend_id`, `prod_name`
FROM `products`
WHERE `vend_id` != 'DLL01';

c9e93a9209d552796b6fa1382296f3b2.png
SELECT `prod_name`, `prod_price`
FROM `products`
WHERE `prod_price` BETWEEN 5 AND 10;

6ed2af172aed65494ec5392b8b9f7fb0.png

在使用BETWEEN AND时,必须指定两个值---所需范围的低端值到高端值。这两个值必须用AND关键字分隔。BETWEEN 匹配范围中所有的值,包括指定的开始值和结束值。

SELECT `cust_name`
FROM `customers`
WHERE `cust_email` IS NULL;

a628384a22cf251d1cb9539c0d903b9d.png

NULL与字段包含0,空字符串或仅仅包含空格不同。

挑战题

  • 编写 SQL 语句,从 Products 表中检索产品 ID(prod_id)和产品名 称(prod_name),只返回价格为 9.49 美元的产品。
SELECT `prod_id`, `prod_name` 
FROM `products` 
WHERE `prod_price` = 9.49;
  • 编写 SQL 语句,从 Products 表中检索产品ID(prod_id)和产品名称(prod_name),只返回价格为9美元或更高的产品。
SELECT `prod_id`, `prod_name` 
FROM `products` 
WHERE `prod_price` >= 9;
  • 结合第3课和第4课编写SQL语句,从OrderItems表中检索出所有不同订单(order_num),其中包含100个或更多的产品。
SELECT DISTINCT `order_num` 
FROM `orderitems` 
WHERE `quantity` >=100;
  • 编写 SQL 语句,返回 Products 表中所有价格在 3 美元到 6 美元之间的产品的名称(prod_name)和价格(prod_price),然后按价格对结果进行排序。
SELECT `prod_name`, `prod_price` 
FROM `products` 
WHERE `prod_price` BETWEEN 3 AND 6 
ORDER BY `prod_price`;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值