KingbaseES 中select distinct on 语句
用法
SELECT DISTINCT ON ( expression [, ...] )
把记录根据[, …]的值进行分组,分组之后仅返回每一组的第一行。
需要注意的是,如果不指定ORDER BY子句,返回的第一条记录是不确定的。如果你使用了ORDER BY 子句,那么[, …]里面的值必须靠近ORDER BY子句的最左边。
例子
构造数据
create table student(id serial,name character varying,course character varying,score integer);
insert into student (name,course,score) values('张三','语文',89);
insert into student (name,course,score) values('张三','数学',99);
insert into student (name,course,score) values('张三','外语',84);
insert into student (name,course,score) values('张三','物理',77);
insert into student (name,course,score) values('张三','化学',87);
insert into student (name,course,score) values('李四','语文',91);
insert into student (name,course,score) values('李四','数学',81);
insert into student (name,course,score) values('李四','外语',88);
insert into student (name,course,score) values('李四','物理',68);
insert into student (name,course,score) values('李四','化学',83);
insert into student (name,course,score) values('王五','语文',85);
insert into student (name,course,score) values('王五','数学',65);
insert into student (name,course,score) values('王五','外语',95);
insert into student (name,course,score) values('王五','物理',90);
insert into student (name,course,score) values('王五','化学',78);
1.当没用指定order by子句的时候随机返回一行。
test=# select distinct on(course)id,name,course,score from student;
id | name | course | score
----+------+--------+-------
10 | 李四 | 化学 | 83
7 | 李四 | 数学 | 81
8 | 李四 | 外语 | 88
4 | 张三 | 物理 | 77
1 | 张三 | 语文 | 89
(5 行记录)
2.使用order by子句获取每门学科最高/最低分。
test=# select distinct on(course)id,name,course,score from student order by course,score;
id | name | course | score
----+------+--------+-------
15 | 王五 | 化学 | 78
12 | 王五 | 数学 | 65
3 | 张三 | 外语 | 84
9 | 李四 | 物理 | 68
11 | 王五 | 语文 | 85
(5 行记录)
test=# select distinct on(course)id,name,course,score from student order by course,score desc;
id | name | course | score
----+------+--------+-------
5 | 张三 | 化学 | 87
2 | 张三 | 数学 | 99
13 | 王五 | 外语 | 95
14 | 王五 | 物理 | 90
6 | 李四 | 语文 | 91
(5 行记录)
- 如果指定order by子句必须把分组的字段放在最左边
test=# select distinct on(course)id,name,course,score from student order by score desc,course;
错误: 表达式SELECT DISTINCT ON必须匹配初始化的ORDER BY表达式
第1行select distinct on(course)id,name,course,score from student ...
KingbaseES 中select distinct on 语句的更多相关文章
- mysql中select distinct的用法
在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但 往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的 ...
- mysql中select distinct的使用方法
在使用mysql时,有时须要查询出某个字段不反复的记录,尽管mysql提供有distinct这个keyword来过滤掉多余的反复记录仅仅保留一条,但往往仅仅用它来返回不反复记录的条数,而不是用它来返回 ...
- 数据库中Select For update语句的解析
----------- Oracle -----------------– Oracle 的for update行锁 键字: oracle 的for update行锁 SELECT-FOR UPDAT ...
- SQL中的多表联查(SELECT DISTINCT 语句)
前言:(在表中,可能会包含重复值.这并不成问题,不过,有时你也许希望仅仅列出不同(distinct)的值. 关键词 DISTINCT 用于返回唯一不同的值.) 如果不加DISTINCT 的话,主表本来 ...
- LINQ to SQL语句(2)之Select/Distinct
适用场景:o(∩_∩)o- 查询呗. 说明:和SQL命令中的select作用相似但位置不同,查询表达式中的select及所接子句是放在表达式最后并把子句中的变量也就是结果返回回来:延迟.Select/ ...
- 容易被忽略的事----sql语句中select语句的执行顺序
关于Sql中Select语句的执行顺序,一直很少注意这个问题,对于关键字的使用也很随意,至于效率问题,因为表中的数据量都不是很大,所以也不是很在意. 今天在一次面试的时候自己见到了,感觉没一点的印象, ...
- LINQ to SQL 语句(2)之 Select/Distinct
LINQ to SQL 语句(2)之 Select/Distinct [1] Select 介绍 1 [2] Select 介绍 2 [3] Select 介绍 3 和 Distinct 介绍 Se ...
- [转]LINQ语句之Select/Distinct和Count/Sum/Min/Max/Avg
在讲述了LINQ,顺便说了一下Where操作,这篇开始我们继续说LINQ语句,目的让大家从语句的角度了解LINQ,LINQ包括LINQ to Objects.LINQ to DataSets.LINQ ...
- SQL SELECT DISTINCT 语句
SQL SELECT DISTINCT 语句 在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值. 关键词 DISTINCT 用于返回唯一不同的值. 语法 ...
随机推荐
- go程序添加远程调用tcpdump功能
最近开发的telemetry采集系统上线了.听起来高大上,简单来说就是一个grpc/udp服务端,用户的机器(路由器.交换机)将它们的各种统计数据上报采集.整理后交后端的各类AI分析系统分析.目前华为 ...
- 获取请求体数据 POST
POST获取请求体 请求体中封装了 POST请求的请求参数 获取流对象 再从流对象中那数据 一种字节流 一种字符流 BufferedReader getReader()获取字符输入流 只能操作字符 S ...
- 《A Neural Algorithm of Artistic Style》理解
在美术中,特别是绘画,人类掌握了通过在图像的内容和风格间建立复杂的相互作用从而创造独特的视觉体验的技巧.到目前为止,这个过程的算法基础是未知的,也没有现存的人工系统拥有这样的能力.然而在视觉感知的其他 ...
- private关键字的作用及使用和this关键字的作用
封装的操作--private关键字 private的含义 1. private是一个权限修饰符,代表最小权限. 2. 可以修饰成员变量和成员方法. 3. 被private修饰后的成员变量和成员方法,只 ...
- 2022 07 13 第一小组 田龙跃 Java再学习笔记
1.类名命名规则: 只能由数字字母,下划线,美元符号组成(不能以数字开头,尽量不要用下划线开头) 2.注释(养成多写注释的好习惯) 单行注释 // ctrl+/ 多行注释 // ctrl+shirt+ ...
- 2022-7-15 java 数据结构入门
@ 目录 数据结构 1.二分查找 动图演示: 2.冒泡排序 1.冒泡排序原理 2.冒泡排序基础版 3.冒泡排序代码优化版 4.冒泡排序代码升级版 3.选择排序 1. 算法步骤 2.插入排序图解: 3. ...
- Kafka Topic Partition Offset 这一长串都是啥?
摘要:Offset 偏移量,是针对于单个partition存在的概念. 本文分享自华为云社区<Kafka Topic Partition Offset 这一长串都是啥?>,作者: gent ...
- CF1703C Cypher 题解
题意:模拟一个 \(n\) 位密码锁. 做法:直接模拟,注意往后推,即若为 \(U\) 变为 \(D\),若为 \(D\) 变为 \(U\).注意 \(0\) 和 \(9\) 进行操作时的特判. #i ...
- mysql主从复制学习笔记
一.musql主从复制原理 MySQL之间数据复制的基础是二进制日志文件(binary log file).一台MySQL数据库一旦启用二进制日志后,其作为master,它的数据库中所有操作都会以&q ...
- 2022-7-20 第七组 pan小堂 String
字符串 String 字符串部分方法 字符串对象的特点: 1.Java程序中所有双引号引起来的内容,都是String类的对象 2.字符串内容不可变,它们的值在创建后不能被更改(在底层被final修饰, ...