最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Sql group by 分組取時間最新的一條數據(示例代碼)

 更新時間:2024年04月26日 10:08:49   作者:濤哥是個大帥比  
這篇文章主要介紹了Sql group by 分組取時間最新的一條數據,本文通過示例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧

項目場景:

數據庫:Oracle

表名:Test

字段名:Id、PId、Name、Time

需求:根據PId分組,1、取時間最新的一條數據;2、取時間最早的一條數據。

示例代碼: 

一、取時間最新的一條數據

1.取時間最新的記錄分組,允許重復

多條Time一樣的都是最新記錄

select *
from test t
where
pid 
in
(
    select PId from Test t
    where
    time=(select max(time) from Test t1 where t1.PId=t.PId)
    group by Pid
)
and
time=(select max(time) from Test t1 where t1.PId=t.PId)

2.分組后取時間最新的記錄,不允許重復

如果Id是序列自增長可以使用max(id),多條Time一樣的只取一條

/*注意Id必須使用聚合函數Max*/
SELECT max(Id), Pid, MAX(Time) as MaxTime
FROM Test
GROUP BY Pid

3.使用ROW_NUMBER()窗口函數,不允許重復

如果Id是uuid類型無法使用max(id)的解決辦法,使用ROW_NUMBER()窗口函數

在這個查詢中,我們使用了ROW_NUMBER()窗口函數,并按照Pid進行分組。然后,我們按照Time降序排序,以便最新的時間排在前面。最后,在外部查詢中,我們選擇排名為1的記錄,即每個分組中時間最新的記錄。

/*降序是為了where KeyId=1 (1是固定值第一條),如果升序由于不知道每組多少條where中KeyId就無法過濾了*/
select *
from (
  select row_number() over(partition by Pid order by Time desc) as KeyId ,* from Test   
) d
where KeyId=1

二、取時間最早的一條數據

 這個查詢使用了窗口函數MIN來獲取每個分組中的最小時間值(min_time)。然后,在外部查詢中,通過比較Time和min_time來過濾出每個分組中時間最早的數據行。

SELECT *
FROM (
  SELECT *,
         MIN(Time) OVER (PARTITION BY Pid) AS min_time
  FROM Test
) t
WHERE Time = min_time; 

到此這篇關于Sql group by 分組取時間最新的一條數據的文章就介紹到這了,更多相關Sql group by 分組取數據內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • MySQL日期數據類型、時間類型使用總結

    MySQL日期數據類型、時間類型使用總結

    MySQL日期數據類型、MySQL時間類型使用總結,需要的朋友可以參考下。
    2010-06-06
  • MySQL函數與存儲過程字符串長度限制的解決

    MySQL函數與存儲過程字符串長度限制的解決

    本文主要介紹了MySQL函數與存儲過程字符串長度限制的解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • 利用MySQL函數實現判斷視頻擴展名的代碼

    利用MySQL函數實現判斷視頻擴展名的代碼

    MySQL擁有強大的自定義函數功能,如下,我寫了一個用MySQL函數 判斷視頻地址是否可以手機端播放
    2012-02-02
  • MySQL高效處理ORDER BY與GROUP BY查詢的優(yōu)化策略

    MySQL高效處理ORDER BY與GROUP BY查詢的優(yōu)化策略

    在高并發(fā)、大數據量的業(yè)務場景中,SQL 查詢性能直接影響系統(tǒng)整體響應速度,本文將深入探討 MySQL 中排序與分組的執(zhí)行機制,并提供一系列實用的優(yōu)化策略,希望對大家有所幫助
    2026-02-02
  • Windows10系統(tǒng)下Mysql8.0.13忘記root密碼的操作方法

    Windows10系統(tǒng)下Mysql8.0.13忘記root密碼的操作方法

    這篇文章主要給大家介紹了關于Windows10系統(tǒng)下Mysql8.0.13忘記root密碼的操作方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • MYSQL半同步配置思路

    MYSQL半同步配置思路

    在默認設置下,MySQL使用異步復制,主庫發(fā)送binlog后不等待從庫確認,可能導致數據不一致或丟失,半同步復制則在主庫更新數據后先等待從庫確認同步完成,本文給大家介紹MYSQL半同步配置,感興趣的朋友一起看看吧
    2023-09-09
  • Mysql中InnoDB與MyISAM索引差異詳解(最新整理)

    Mysql中InnoDB與MyISAM索引差異詳解(最新整理)

    InnoDB和MyISAM在索引實現和特性上有差異,包括聚集索引、非聚集索引、事務支持、并發(fā)控制、覆蓋索引、主鍵約束、外鍵支持和物理存儲結構等方面,InnoDB更適合事務型應用,而MyISAM適合只讀或讀多寫少的場景,本文介紹Mysql中InnoDB與MyISAM索引差異,感興趣的朋友一起看看吧
    2025-03-03
  • MySQL最佳實踐之分區(qū)表基本類型

    MySQL最佳實踐之分區(qū)表基本類型

    這篇文章主要給大家介紹了關于MySQL最佳實踐之分區(qū)表基本類型的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用MySQL具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2020-05-05
  • 關于case when語句的報錯問題詳解

    關于case when語句的報錯問題詳解

    SQL CASE 表達式是一種通用的條件表達式,類似于其它語言中的 if/else 語句,下面這篇文章主要給大家介紹了關于case when語句的報錯問題的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2018-08-08
  • sql獲取存儲過程返回數據過程解析

    sql獲取存儲過程返回數據過程解析

    這篇文章主要介紹了sql獲取存儲過程返回數據過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12

最新評論

赤水市| 新安县| 罗定市| 黑山县| 革吉县| 阳泉市| 沧源| 遂川县| 保康县| 盐边县| 乡城县| 若尔盖县| 苍梧县| 宣汉县| 民权县| 前郭尔| 安塞县| 舞阳县| 区。| 姜堰市| 和政县| 肇庆市| 乐东| 缙云县| 定日县| 高邑县| 泰和县| 陇川县| 巴林左旗| 禹州市| 嘉黎县| 土默特右旗| 黎川县| 潞西市| 库车县| 鲜城| 巴彦淖尔市| 武胜县| 边坝县| 金川县| 浦北县|