SQLite学习笔记五:Order By,Group By,Having,Distinct

SQLite Order By
SQLite的ORDER BY 子句是用来基于一个或多个列按升序或降序排列数据。
语法

ORDER BY 子句的基本语法如下:

SELECT column-list 
FROM table_name 
[WHERE condition] 
[ORDER BY column1, column2, .. columnN] [ASC | DESC];

实例
假设COMPANY表有以下记录:
SQLite学习笔记五:Order By,Group By,Having,Distinct_第1张图片
将结果按SALARY升序排序:
sqlite> SELECT * FROM COMPANY ORDER BY SALARY ASC;

产生以下结果:

SQLite学习笔记五:Order By,Group By,Having,Distinct_第2张图片

将结果按NAME和SALARY降序排序:

sqlite> SELECT * FROM COMPANY ORDER BY NAME, SALARY desc;

将产生以下结果:

SQLite学习笔记五:Order By,Group By,Having,Distinct_第3张图片

SQLite Group By

SQLite 的 GROUP BY 子句用于与SELECT语句一起使用,用来对相同的数据进行分组。在SELECT语句中,GROUP BY 子句放在WHERE 子句之后,放在ORDER BY子句之前。
语法

SELECT column-list
FROM table_name
WHERE [ conditions ]
GROUP BY column1, column2....columnN
ORDER BY column1, column2....columnN
如果想了解每个客户的工资总额,则可以使用GROUP BY查询,如下所示:

sqlite> SELECT NAME, SUM(SALARY) FROM COMPANY GROUP BY NAME;
将产生如下结果:

SQLite学习笔记五:Order By,Group By,Having,Distinct_第4张图片

现在,在COMPANY表中另外创建3个记录:

INSERT INTO COMPANY VALUES (8, 'Paul', 24, 'Houston', 20000.00 );
INSERT INTO COMPANY VALUES (9, 'James', 44, 'Norway', 5000.00 );
INSERT INTO COMPANY VALUES (10, 'James', 45, 'Texas', 5000.00 );

SQLite学习笔记五:Order By,Group By,Having,Distinct_第5张图片

用GROUP BY 语句来对所有记录按NAME 列进行分组,如下所示:

sqlite> SELECT NAME, SUM(SALARY) FROM COMPANY GROUP BY NAME ORDER BY NAME;

SQLite学习笔记五:Order By,Group By,Having,Distinct_第6张图片

SQLite Having子句
HAVING子句允许指定条件来过滤将出现在最终结果中得分组结果。
WHERE子句在所选列上设置条件,而HAVING子句则在由GROUP BY子句创建的分组上设置条件。
语法

下面是HAVING子句在SELECT查询中的位置:

SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
在一个查询中,HAVING子句必须放在GROUP BY 子句之后,必须放在ORDER BY自居之前。下面是包含HAVING子句的SELECT语句的语法:
SELECT column1, column2
FROM table1, table2
WHERE [ conditions ]
GROUP BY column1, column2
HAVING [ conditions ]
ORDER BY column1, column2

实例

假设COMPANY表有以下记录:

SQLite学习笔记五:Order By,Group By,Having,Distinct_第7张图片

显示名称计数小于2的所有记录:

sqlite > SELECT * FROM COMPANY GROUP BY name HAVING count(name) < 2;



显示名称计数大于2的所有记录:
sqlite > SELECT * FROM COMPANY GROUP BY name HAVING count(name) > 2;

SQLite Distinct 关键字
SQLite 的 Distinct 关键字 与 SELECT 语句一起使用,来消除所有重复的记录,并只获取唯一一次记录。
有可能出现一种情况,在一个表中有多个重复的记录。当提取这样的记录时,DISTINCT关键字就显得特别有意义,它只获取唯一一次记录,而不是获取重复记录。
语法
用于消除重复记录的DISTINCT关键字的基本语法如下:

SELECT DISTINCT column1, column2,.....columnN 
FROM table_name
WHERE [condition]

假设COMPANY表有以下记录:
SQLite学习笔记五:Order By,Group By,Having,Distinct_第8张图片

下面的SELECT查询,它将返回重复的工资记录:

sqlite> SELECT name FROM COMPANY;
SQLite学习笔记五:Order By,Group By,Having,Distinct_第9张图片

在上述的SELECT查询中使用DISTINCT关键字:
sqlite> SELECT DISTINCT name FROM COMPANY;

SQLite学习笔记五:Order By,Group By,Having,Distinct_第10张图片




你可能感兴趣的:(数据保存)