一.GROUP BY

使用GROUP BY分组查询在SELECT子句中只能出现分组字段和聚合函数,HAVING子句相当于WHERE,使用条件过滤数据。

示例1.以a,b分组查询tbl_insert表,且a大于5的行。

test=# select a,b,count(*) from tbl_insert group by a,b having a > 5;
a | b | count
---+---+-------
7 | 7 | 4
8 | 8 | 2
6 | 6 | 3
(3 rows) test=# select a,b,count(*) from tbl_insert where a > 5 group by a,b;
a | b | count
---+---+-------
7 | 7 | 4
8 | 8 | 2
6 | 6 | 3
(3 rows)

示例2.以a,b分组查询tbl_insert表,且a,b组合相同的行数大于2的a,b组合

test=# select a,b,count(*) from tbl_insert group by a,b having count(*) > 2;
a | b | count
---+---+-------
7 | 7 | 4
6 | 6 | 3
(2 rows)

示例3.以a,b分组查询tbl_insert表,如果SELECT子句中包含其他字段,则ERROR。

test=# select a,b,c from tbl_insert group by a,b;
ERROR: column "tbl_insert.c" must appear in the GROUP BY clause or be used in an aggregate function
LINE 1: select a,b,c from tbl_insert group by a,b;

二.ORDER BY

使用ORDER BY对结果集进行排序,默认使用ASC升序排列,可指定DESC降序排列。

示例1.查询tbl_insert表按照a升序,c降序排列

test=# select * from tbl_insert where a > 6 order by a ,c desc;
a | b | c
---+---+-------
7 | 7 | abc
7 | 7 | aBC
7 | 7 | ABc
7 | 7 | 3%1
8 | 8 | 3_%_1
8 | 8 | 3%_1
(6 rows)

示例2.以字段a,b分组查询tbl_insert表,并按照各分组中行数降序排列。

test=# select a,b,count(*) from tbl_insert group by a,b order by count(*) desc;
a | b | count
---+---+-------
7 | 7 | 4
6 | 6 | 3
8 | 8 | 2
4 | 4 | 1
5 | 5 | 1
1 | 1 | 1
3 | 3 | 1
2 | 2 | 1
(8 rows)

三.LIMIT

使用LIMIT可以限制结果集的行数。

示例1.查询tbl_insert表,并以a降序排列,只输出前5行数据。

test=# select * from tbl_insert order by a desc limit 5;
a | b | c
---+---+-------
8 | 8 | 3_%_1
8 | 8 | 3%_1
7 | 7 | 3%1
7 | 7 | ABc
7 | 7 | abc
(5 rows)

四.OFFSET

使用OFFSET可以忽略前面的N行,与LIMIT结合使用可以实现分页功能。

示例1.查询tbl_insert表,并以a升序排列,前10行忽略不输出。

test=# select * from tbl_insert order by a offset 10;
a | b | c
---+---+-------
7 | 7 | ABc
7 | 7 | aBC
8 | 8 | 3%_1
8 | 8 | 3_%_1
(4 rows)

示例2.查询tbl_insert表,并以a升序排列,实现分页功能,每页5行数据。

test=# select * from tbl_insert order by a offset 0 limit 5;
a | b | c
---+---+----
1 | 1 | 11
2 | 2 | 22
3 | 3 | 33
4 | 4 | 44
5 | 5 | 51
(5 rows) test=# select * from tbl_insert order by a offset 5 limit 5;
a | b | c
---+---+-----
6 | 6 | 661
6 | 6 | 1
6 | 6 | 61
7 | 7 | 3%1
7 | 7 | abc
(5 rows) test=# select * from tbl_insert order by a offset 10 limit 5;
a | b | c
---+---+-------
7 | 7 | ABc
7 | 7 | aBC
8 | 8 | 3%_1
8 | 8 | 3_%_1
(4 rows)

postgresql----排序ORDER BY,分组GROUP BY,分页OFFSET&&LIMIT的更多相关文章

  1. MySQL之单表查询 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER BY 八 限制查询的记录数:LIMIT 九 使用正则表达式查询

    MySQL之单表查询 阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER B ...

  2. 第17课-数据库开发及ado.net 聚合函数,模糊查询like,通配符.空值处理.order by排序.分组group by-having.类型转换-cast,Convert.union all; Select 列 into 新表;字符串函数;日期函数

    第17课-数据库开发及ado.net 聚合函数,模糊查询like,通配符.空值处理.order by排序.分组group by-having.类型转换-cast,Convert.union all;  ...

  3. 18 12 06 sql 的 基本语句 查询 条件查询 逻辑运算符 模糊查询 范围查询 排序 聚合函数 分组 分页 连接查询 自关联 子查询

    -- 数据的准备 -- 创建一个数据库 create database python_test charset=utf8; -- 使用一个数据库 use python_test; -- 显示使用的当前 ...

  4. MySQL—增删改查,分组,连表,limit,union,alter,排序,去重

    MySQL增删改查 在表格的增删改查中,查的内容是最多的,包括group by ,join,limit,union,alter,排序都是服务于查的 #sql语句数据行操作补充 #增加: #insert ...

  5. mysql概要(四)order by,group 的特点,子查询

    1.order by 默认按升序排列(asc/desc),多字段排序 order by 字段 排序方式,字段2 排序方式,..:在分组排序中,排序是对分组后的结局进行排序,而不是在组中进行排序. 2. ...

  6. linq中order by 和group by (含lambda表达式实现)以及综合案例

    一.Linq应用场景 linq的语法通过System.Linq下面的Enumerable类提供支持,也就是说,只要是实现了IEnumerable<T>的对象都可以使用Linq的语法来查询. ...

  7. ORDER BY,GROUP BY 和DI STI NCT 优化

    读<MySQL性能调优与架构设计>笔记之ORDER BY,GROUP BY 和DI STI NCT 优化 2015年01月18日 18:51:31 lihuayong 阅读数:2593 标 ...

  8. mysql-in关键字,分组查询,分页查询

    1. in关键字,组查询 # 使用or来查询的化,不方便而且参数一多比较傻 select * from users where id=1 or id=2 or id=4; select * from ...

  9. 【SQL】分组数据,过滤分组-group by , having

    学习笔记,原文来自http://blog.csdn.net/robinjwong/article/details/24845125 创建分组 - GROUP BY 分组是在SELECT语句的GROUP ...

随机推荐

  1. 数据库 proc编程九

    第一种动态sql EXEC SQL EXECUTE IMMEDIATE :psql; .仅适用于非select语句 .嵌入SQL语句中不能包含输入宿主变量 void main() { EXEC SQL ...

  2. WordCount示例深度学习MapReduce过程

    转自: http://blog.csdn.net/yczws1/article/details/21794873 . 我们都安装完Hadoop之后,按照一些案例先要跑一个WourdCount程序,来测 ...

  3. matlab下使用svmlib工具包

    虽然网络上已经有了很多的类似的东西了吧.但是呢,我自己还是要写一写的. 安装: 对于 libsvm工具包,我们可以去官方网站下载,网址为:http://www.csie.ntu.edu.tw/~cjl ...

  4. e552. 取Applet的参数

    An applet can be configured through the use of applet parameters. For example, the contents for a ne ...

  5. 那些有关求解next数组的算法

    next数组的历史 有关字符串的模式匹配算法中,比较容易写出的是朴素的匹配算法也就是一种暴力求解方式,但是由于其时间复杂度为子串长度和主串长度的乘积,例如strlen(subStr) = n,strl ...

  6. MySQL 日期与时间的处理

    1.查询当前日期时间:函数有now(),localtime(),current_timestamp(),sysdate(). mysql> select now(),localtime(),cu ...

  7. c++ _int64 转成string

    _i64toa(a,buffer,10); scanf("%I64d",&a);printf("%I64d",a); 就可以正确输入输出了.当使用uns ...

  8. <img/>标签onerror事件在IE下的bug和解决方法

    IE下打开网页时,会弹出“Stack overflow at line: 0”的弹框.经分析,这个bug是由于img标签的onerror事件引起的.程序中用到的代码片段如下:正常情况下显示src所指路 ...

  9. MVC+LINQToSQL的Repository模式之(一)数据工厂 DataContext绑定线程

    namespace Data{    /// <summary>    /// 数据库建立工厂    /// Created By : 张占岭    /// Created Date:20 ...

  10. 在程序中使用命令行的方式来调用py文件

    做这个主要是程序可以做到直接调用一个脚本,而不是从脚本中把类或者函数import出来这样调用,比如我们写的python命令行文件,让java来调用,让c++来调用,都是可以的.这样不需要整个语言都用p ...