欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

項目場景:

數(shù)據(jù)庫:Oracle

表名:Test

字段名:Id、PId、Name、Time

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

示例代碼: 

一、取時間最新的一條數(shù)據(jù)

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

多條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.分組后取時間最新的記錄,不允許重復(fù)

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

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

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

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

在這個查詢中,我們使用了ROW_NUMBER()窗口函數(shù),并按照Pid進(jìn)行分組。然后,我們按照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

二、取時間最早的一條數(shù)據(jù)

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

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

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

相關(guān)文章

  • mysql每半小時平均值計算的sql語句

    mysql每半小時平均值計算的sql語句

    有時候我們需要計算每半小時的平均值,那么就需要參考下面的sql語句了
    2015-11-11
  • MySQL的MRR(Multi-Range Read)優(yōu)化原理解析

    MySQL的MRR(Multi-Range Read)優(yōu)化原理解析

    MRR優(yōu)化是MySQL中一種重要的查詢優(yōu)化技術(shù),它通過減少磁盤I/O的隨機(jī)性和提高緩存效率,顯著提升了查詢性能,這篇文章主要介紹了MySQL的MRR(Multi-Range Read)優(yōu)化原理詳解,需要的朋友可以參考下
    2024-08-08
  • 解讀mysql中的null問題

    解讀mysql中的null問題

    這篇文章主要介紹了解讀mysql中的null問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • mysql-8.0.30壓縮包版安裝和配置MySQL環(huán)境過程

    mysql-8.0.30壓縮包版安裝和配置MySQL環(huán)境過程

    該文章介紹了如何在Windows系統(tǒng)中下載、安裝和配置MySQL數(shù)據(jù)庫,包括下載地址、解壓文件、創(chuàng)建和配置my.ini文件、設(shè)置環(huán)境變量、初始化MySQL服務(wù)、啟動服務(wù)以及修改root用戶密碼等步驟
    2025-01-01
  • MySql主鍵id不推薦使用UUID的原因分析

    MySql主鍵id不推薦使用UUID的原因分析

    MySQL的索引主要分為主鍵索引(PRIMARY KEY),唯一索引(UNIQUE) ,普通索引(INDEX)和全文索引(FULLTEXT) ,主鍵索引是一種特殊的唯一索引,不允許有空值,這篇文章主要介紹了MySql主鍵id不推薦使用UUID的原因分析,需要的朋友可以參考下
    2023-03-03
  • 不重啟Mysql修改root密碼的方法

    不重啟Mysql修改root密碼的方法

    如何不重啟mysqld,且沒有權(quán)限修改用戶賬號和權(quán)限的情況下,如何重新設(shè)置root密碼?不知道沒關(guān)系,在此之前我也是不知道如何操作的,先看看下面的幾種重置root密碼的方法
    2014-03-03
  • MySQL中MVCC機(jī)制的實現(xiàn)原理

    MySQL中MVCC機(jī)制的實現(xiàn)原理

    這篇文章主要介紹了MySQL中MVCC機(jī)制的實現(xiàn)原理,MVCC多版本并發(fā)控制,MySQL中一種并發(fā)控制的方法,他主要是為了提高數(shù)據(jù)庫的讀寫性能,用更好的方式去處理讀寫沖突
    2022-08-08
  • MySQL8.2.0安裝教程分享

    MySQL8.2.0安裝教程分享

    這篇文章詳細(xì)介紹了如何在Windows系統(tǒng)上安裝MySQL數(shù)據(jù)庫軟件,包括下載、安裝、配置和設(shè)置環(huán)境變量的步驟
    2025-02-02
  • mysql5.7.20 安裝配置方法圖文教程(mac)

    mysql5.7.20 安裝配置方法圖文教程(mac)

    這篇文章主要為大家詳細(xì)介紹了mac下mysql5.7.20 安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • mysql alter語句用法實例

    mysql alter語句用法實例

    這里簡單分享幾個mysql alter語句用法,方便大家使用
    2013-02-02

最新評論