在SQLite数据库中,提供了和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>
区分DISTINCT 列
有一些字段的值可能会出现重复,比如订单表中,一个客户可能会有好几份订单,因此客户的名字会重复出现。
到底有哪些客户下了订单呢?下面的语句将客户名字区分出来。代码如下:
- 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 列
分组和前面的区分有一点类似。区分仅仅是为了去掉重复项,而分组是为了对各类不同项进行统计计算。
比如上面的例子,我们区分出 5 个客户,这 5 个客户一共下了 11 个订单,说明很多客户都下了不止一个订单。
下面的语句统计每个客户在订单上总共花费了多少钱。代码如下:
- 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 内置的统计函数,在这个例子中用来求每个顾客的订单价格的和。
统计结果也可以设定返回条件,但是不能用 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>
关于SQLite数据库的ORDER BY和GROUP BY语句的知识就介绍到这里,希望能给各位带来收获。
【编辑推荐】