表中字段:phonenumber,score,examtime
要取出時間段中phonenumber的score最大並且examtime最小的記錄,用max和min取的值都不是正確的記錄值,用排序子查詢的方法可以取到
select phonenumber,score,examtime,scoretime,createtime,rn from (
select phonenumber,score,examtime,scoretime,createtime,row_number() over(partition by phonenumber order
by score desc,examtime) rn
from t_db_scores
where to_date(scoretime,'yyyy-mm-dd hh24:mi:ss')>=to_date('2018-07-10 00:00:00','yyyy-mm-dd hh24:mi:ss')
and to_date(scoretime,'yyyy-mm-dd hh24:mi:ss')<=to_date('2018-07-20 23:59:59','yyyy-mm-dd hh24:mi:ss')
) where rn=1
先按score降序、examtime公升序對phonenumber分組排序,再只取rn=1的記錄,就可得到正確的結果
Oracle 分組取出最大值記錄
找出乙個固定id值不同型別檔案的最大版本號 也就是相同檔案型別的 max version 注意 重點應該在 rank over partition by order by version desc rank函式用於返回結果集的分區內每行的排名,行的排名是相關行之前的排名數加一。簡單來說rank函式就...
oracle分組排序
在做統計是很多情況會用到分組排序 結合談論的方法 自己建了乙個demo驗證 留在這裡以便備份 create table student2 student id number primary key,student name varchar2 30 not null create table scor...
SqlServer分組排序取出每組順序第一的資料
首先建立測試表並插入資料,建立測試表 匯率庫表 create table exchangerate moneytype varchar 100 幣種 exchangerate varchar 100 匯率 adddate datetime 新增時間 插入測試資料 insert into exchan...