一個SQLite數(shù)據(jù)庫的ORDER BY和GROUP BY代碼實例
在SQLite數(shù)據(jù)庫中,提供了和SQL Server一樣的排序和分組的ORDER BY和GROUP BY語句,以及DISTINCT的使用,本文介紹了這一部分使用的代碼實例,接下來我們就一一介紹。
排序ORDER BY 列 ASC (DESC)
指定某個列進行排序,ASC 為升序,DESC 為降序。下面的語句查詢汽車品牌和價格,并以價格排序。代碼如下:
- sqlite>
- sqlite> SELECT Name, Cost FROM Cars ORDER BY Cost DESC;
- Name Cost
- ---- ---------------
- Bent 350000
- Merc 57127
- Audi 52642
- Humm 41400
- Volv 29000
- Volk 21600
- Citr 21000
- Skod 9000
- sqlite>
區(qū)分DISTINCT 列
有一些字段的值可能會出現(xiàn)重復(fù),比如訂單表中,一個客戶可能會有好幾份訂單,因此客戶的名字會重復(fù)出現(xiàn)。
到底有哪些客戶下了訂單呢?下面的語句將客戶名字區(qū)分出來。代碼如下:
- sqlite>
- sqlite> Select * FROM Orders;
- Id OrderPrice Customer
- ---- --------------- ---------------
- 1 1200 Williamson
- 2 200 Robertson
- 3 40 Robertson
- 4 1640 Smith
- 5 100 Robertson
- 6 50 Williamson
- 7 150 Smith
- 8 250 Smith
- 9 840 Brown
- 10 440 Black
- 11 20 Brown
- sqlite>
- sqlite> SELECT DISTINCT Customer FROM ORDERS;
- Customer
- ---------------
- Black
- Brown
- Robertson
- Smith
- Williamson
- sqlite>
分組GROUP BY 列
分組和前面的區(qū)分有一點類似。區(qū)分僅僅是為了去掉重復(fù)項,而分組是為了對各類不同項進行統(tǒng)計計算。
比如上面的例子,我們區(qū)分出 5 個客戶,這 5 個客戶一共下了 11 個訂單,說明很多客戶都下了不止一個訂單。
下面的語句統(tǒng)計每個客戶在訂單上總共花費了多少錢。代碼如下:
- sqlite>
- sqlite> SELECT sum(OrderPrice) AS Total, Customer FROM Orders GROUP BY Customer;
- Total Customer
- --------------- ---------------
- 440 Black
- 860 Brown
- 340 Robertson
- 2040 Smith
- 1250 Williamson
- sqlite>
這里Sum 是SQLite 內(nèi)置的統(tǒng)計函數(shù),在這個例子中用來求每個顧客的訂單價格的和。
統(tǒng)計結(jié)果也可以設(shè)定返回條件,但是不能用 WHERE 子句,而是用HAVING 子句,如下例,返回訂單總額大于 1000 的顧客。代碼如下:
- sqlite>
- sqlite> SELECT sum(OrderPrice) AS Total, Customer FROM Orders
- ...> GROUP BY Customer HAVING sum(OrderPrice)>1000;
- Total Customer
- --------------- ---------------
- 2040 Smith
- 1250 Williamson
- sqlite>
關(guān)于SQLite數(shù)據(jù)庫的ORDER BY和GROUP BY語句的知識就介紹到這里,希望能給各位帶來收獲。
【編輯推薦】