1. 程式人生 > >oracle查詢:分組查詢,取出每組中的第一條記錄

oracle查詢:分組查詢,取出每組中的第一條記錄

方法一:

方法二:

參考sql reference文件:

Analytic functions compute an aggregate value based on a group of rows. They differ from aggregate functions in that they return multiple rows for each group.

分析一個聚合函式計算值基於一組行。他們不同於聚合函式返回多個行每組。

Analytic functions are the last set of operations performed in a query except for the final 

ORDERBY clause. All joins and all WHERE , GROUPBY , and HAVING clauses are completed before the analytic functions are processed. Therefore, analytic functions can appear only in the select list or ORDERBY clause.

解析函式的最後一組操作中執行一個查詢,除了最後的ORDER BY子句。所有連線和地方、GROUP BY和之前有條款完成分析處理功能。因此,解析函式只能出現在選擇列表中或ORDER BY子句。


語法結構:

analytic_function ([ arguments ]) OVER
 (analytic_clause)

其中analytic_clause結構包括:

[ query_partition_clause ]
[ order_by_clause [ windowing_clause ] ]

也就是:函式名( [ 引數 ] ) over( [ 分割槽子句 ]  [ 排序子句 [ 滑動視窗子句 ] ])

     這裡PARTITION BY 引導的分割槽子句類似於聚組函式中的group by,排序子句可看成是select語句中的order by.


相關推薦

oracle查詢:分組查詢取出第一記錄

方法一: 方法二: 參考sql reference文件: Analytic functions compute an aggregate value based on a group of rows. They differ from a

Mysqlexists子查詢語句的使用取出最高的前n名的資訊

一、準備測試的表和資料 create table cat( id int not null auto_increment primary key, cat_id int, value int,

sqlite 分組後獲取第一記錄

有表如下 CREATE TABLE test ( id INTEGER PRIMARY KEY ,groupid INTEGER DEFAULT 0 ,t INTEGER DEFAULT 0 ,x INTEGER DEFAULT 0 ,y INTEGER DEFAULT 0

oracle查詢:取出第一記錄

Oracle查詢:取出每組中的第一條記錄 按type欄位分組,code排序,取出每組中的第一條記錄 方法一: select type,min(code) from group_info  group by type; 注意:select 後面的列要在group by

(oracle/mysql)查詢分組查詢第一資料

一下是oracle/mysql分組查詢查出每組資料的第一條資料: 表資料: create table tb_name (   column1 int,   column2 varchar,   column3 int,   column4 date ) 查出時間上最新

Oracle 分組統計抽取前十

order by 編號 用戶名 ldb In 行業 partition like ber /**2018年6月14日 潮州ORACEL 統計2017年用電量,按行業分類抽取用電量前十*/select * from (select t.yhbh 用戶編號,

分組查詢前n記錄例項

假設有這樣一張運動員比賽成績表 tb_score 現在要求查詢出每個國家的前三名的成績記錄,查詢語句可以這樣寫: 1、 select t3.id,t3.country,t3.score fro

sql查詢前幾記錄

首先建立測試資料 CREATE TABLE `t2` ( `id` int(11) NOT NULL, `gid` char(1) DEFAULT NULL, `col1` int(11) DEFAULT NULL, `col2` int(11) DEFAU

mybatis 關聯查詢從表只返回第一記錄解決辦法

bean mod 第一條 solid ews 解決辦法 prop ica 元素 如果兩表聯查,主表和明細表的主鍵都是id的話,明細表的多條只能查詢出來第一條。 造成以上情況可能的

mysql分組前幾記錄(排名) 附group by與order by的研究

select a.* from tb a where val = (select max(val) from tb where name = a.name) order by a.name--方法2:select a.* from tb a where not exists(select 1 from tb 

mysql分組前幾記錄

1、表SQL: DROP TABLE IF EXISTS `ho_archives`; CREATE TABLE `ho_archives` (   `id` mediumint(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',

Mysql和Oracl 分組前N記錄

MySQL取每組的前N條記錄:使用自連線的方式一、對分組的記錄取前N條記錄:例子:取前 2條最大(小)的記錄1234567891011121314151617181.用子查詢:SELECT * FROM right2 a  WHERE 2>(SELECT COUNT(*

mysql 分組在每個排序

如下資料: 活動id  批次id  批次開始時間  期望序號 1           1           09:00               1 1            2          09:01                2 1           

#oracle--刪除以id為主鍵地重複記錄且只留下重複記錄第一記錄的sql語句

這道題是我面試一家金融軟體公司的筆試題,該題如下所示: 如下表,是一張使用者表,且uerid為主鍵,圖如下所示。 要求能夠通過一個sql語句刪除所有重複的記錄,並只留下重複記錄中第一條記錄的sql語句。 答案: delete from userinf

用postgresql特性簡化group by 後取前n記錄的方法

需求: 求一段時間內各生產線前3名壞機的原因及壞機數. step 1, 從將原始資料中抽取品質資料放於t96臨時表 create temp table t96 on commit drop as

Mysql獲取前N記錄(開窗函式)

由於專案需求,我需要把查詢出來的資料進行分組,並且只需要每組前三條記錄,後來瞭解到MySQL實現開窗函式的方法,用了之後發現是可以,但今天發現這個方法在Navicat Premium軟體中執行第一次所查詢出來的資料不符合,執行第二次才是符合要求,具體原因有空再瞭

Mysql獲取前N記錄

Select基礎知識 我們在實現select語句的時候,通用的sql格式如下: select *columns* from *tables* where *predicae1* group by *columns* having

Oracle 高級查詢1 關聯查詢 分組查詢

null 函數 定義 關聯 group 顯示 tinc 查詢 求平均值 高級查詢 1.關聯查詢作用:可以跨越多表查詢 --查詢出員工的名字和他所在部門的的名字 語法:select 列,列,列 from 表1 join 表2on 表1外鍵=表2主鍵 2.外聯接 左外聯

linq分組查詢而且獲取每個分組第一記錄數據用於分頁綁定

upd 但是 static groupby 麻煩 asc xxx each request LINQ分組取出第一條數據 Person1: Id=1, Name="Test1" Person2: Id=1, Name="Test1" Person3: Id=2, Na

(轉)python 全棧開發Day74(基於雙下劃線的跨表查詢,聚合查詢,分組查詢,F查詢,Q查詢)

昨日內容回顧 # 一對多的新增方式1(推薦) # book=Book.objects.create(title="水滸傳",price=100,pub_date="1643-4-12",publish_id=1) # print(book.title) # 一對多的新增