1. 程式人生 > 其它 >sql order by 降序_資料分析之SQL(2)

sql order by 降序_資料分析之SQL(2)

技術標籤:sql order by 降序sql where 不包含sql 不等於空sql倒序排列取第一條sql按時間排序sql語句不等於空

從今天起,正式開始學習資料分析相關的知識,希望在未來可以找到一份優秀的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`;