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

SQL去重的3種實(shí)用方法總結(jié)

 更新時(shí)間:2022年10月26日 09:29:57   作者:1024小神  
SQL去重是數(shù)據(jù)分析工作中比較常見的一個(gè)場(chǎng)景,下面這篇文章主要給大家介紹了關(guān)于SQL去重的3種實(shí)用方法的相關(guān)資料,文中通過(guò)圖文以及實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

SQL去重的三種方法匯總? 

這里的去重是指:查詢的時(shí)候, 不顯示重復(fù),并不是刪除表中的重復(fù)項(xiàng)

1.distinct去重

注意的點(diǎn):distinct

只能一列去重,當(dāng)distinct后跟大于1個(gè)參數(shù)時(shí),他們之間的關(guān)系是&&(邏輯與)關(guān)系,只有全部條件相同才會(huì)去重

弊端:當(dāng)查詢的字段比較多時(shí),distinct會(huì)作用多個(gè)字段,導(dǎo)致去重條件增多

select distinct UserResult from Table1

2.group by去重

去重原理:將重復(fù)的行進(jìn)行分組,相同的數(shù)據(jù)只顯示第一行

弊端:使用group by后,所有查詢字段都需要使用聚合函數(shù),比較繁瑣

select min(UserName)UserName,min(UserSex)UserSex,min(UserSubject)UserSubject,min(UserResult)UserResult from Table1
group by UserResult

3.row_number() over (parttion by 分組列 order by 排序列)

弊端:小孟還不知道

去重原理:現(xiàn)根據(jù)重復(fù)列進(jìn)行分組,分組后再進(jìn)行排序,不同的組序號(hào)為1,相同的組序號(hào)為2,排除為2的就達(dá)到了去重效果

select *from
(
--查詢出重復(fù)行
select *,row_number() over (partition by UserResult order by UserResult desc)num from Table1
)A
where A.num=1

這里安利第三個(gè),row_number(),穩(wěn)一些!

補(bǔ)充:SQL根據(jù)某列或幾列分組去重——row_number() over(partition by)的用法

有時(shí)利用SQL進(jìn)行數(shù)據(jù)處理會(huì)發(fā)現(xiàn),要根據(jù)某列或某幾列選取信息,由于其他列不同而出現(xiàn)了多次,如運(yùn)行程序1的結(jié)果圖1:

程序1:

--程序1:要解決的問(wèn)題
select a.*
  from AShareEarningEst a
 where a.S_INFO_WINDCODE in ('000650.SZ')
   and a.REPORTING_PERIOD = 20181231
order by a.RESEARCH_INST_NAME,a.EST_DT

我們看到,在AShareEarningEst(中國(guó)A股盈利預(yù)測(cè)明細(xì))表中,共有12人次的證券公司研究員,對(duì)000650.SZ(仁和藥業(yè))公司的20181231報(bào)告期進(jìn)行預(yù)測(cè)。例:華泰證券的楊燁輝在20160420、20160428和20160622分別對(duì)000650.SZ(仁和藥業(yè))發(fā)布研究報(bào)告進(jìn)行了預(yù)測(cè)?,F(xiàn)在,我們只需要同一家證券公司的同一個(gè)研究員(此處假定同一家證券公司的研究員姓名相同時(shí),即為同一個(gè)研究員)做出的最新預(yù)測(cè)數(shù)據(jù),即根據(jù)證券公司名稱、研究員姓名,同時(shí)根據(jù)估計(jì)日期進(jìn)行篩選。

此時(shí),可根據(jù)row_number() over(partition by)進(jìn)行處理,運(yùn)行程序2結(jié)果如圖2:

程序2:

--程序2:最終解決問(wèn)題的程序
select b.*
from (select row_number() over(partition by a.RESEARCH_INST_NAME,
              a.ANALYST_NAME order by est_dt desc) as rn,
             --根據(jù)RESEARCH_INST_NAME(證券公司名稱)和ANALYST_NAME(研究員名字)進(jìn)行分類,
             --同時(shí)根據(jù)est_dt(估計(jì)日期)倒序排序,即最新日期排在同一分類的上方,此時(shí)構(gòu)建出rn為
             a.*
        from wdzx.AShareEarningEst a
       where a.S_INFO_WINDCODE in ('000650.SZ') --, '000951.SZ', '600006.SH', '600166.SH')
         and a.REPORTING_PERIOD = 20181231) b --將分類后的程序構(gòu)成表b??梢韵冗\(yùn)行b的程序觀察結(jié)果
       where b.rn = 1--運(yùn)用表b的結(jié)果進(jìn)行子查詢,rn=1即為所需結(jié)果

此時(shí),即主要利用了row_number() over(partition by)函數(shù)篩選出了去重后的結(jié)果。

總結(jié)

到此這篇關(guān)于SQL去重的3種實(shí)用方法的文章就介紹到這了,更多相關(guān)SQL去重內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MYSQL事務(wù)回滾的2個(gè)問(wèn)題分析

    MYSQL事務(wù)回滾的2個(gè)問(wèn)題分析

    在事務(wù)中,每個(gè)正確的原子操作都會(huì)被順序執(zhí)行,直到遇到錯(cuò)誤的原子操作,此時(shí)事務(wù)會(huì)將之前的操作進(jìn)行回滾?;貪L的意思是如果之前是插入操作,那么會(huì)執(zhí)行刪 除插入的記錄,如果之前是update操作,也會(huì)執(zhí)行update操作將之前的記錄還原
    2014-05-05
  • mysql中的保留字段產(chǎn)生的問(wèn)題

    mysql中的保留字段產(chǎn)生的問(wèn)題

    我們?cè)谑褂胢ysql的時(shí)候要注意這方面的問(wèn)題,一個(gè)因?yàn)閿?shù)據(jù)庫(kù)字段命名不當(dāng)造成的問(wèn)題檢查起來(lái)還是相當(dāng)麻煩的,今天遇到這種問(wèn)題,花費(fèi)了很長(zhǎng)時(shí)間才找到問(wèn)題所在,這是無(wú)語(yǔ)
    2015-04-04
  • 查找MySQL線程中死鎖的ID的方法

    查找MySQL線程中死鎖的ID的方法

    這篇文章主要介紹了查找MySQL線程中死鎖的ID的方法,文中介紹的方法主要是從數(shù)據(jù)字典里查找,需要的朋友可以參考下
    2015-05-05
  • Linux 安裝JDK Tomcat MySQL的教程(使用Mac遠(yuǎn)程訪問(wèn))

    Linux 安裝JDK Tomcat MySQL的教程(使用Mac遠(yuǎn)程訪問(wèn))

    這篇文章主要介紹了Linux 安裝JDK Tomcat MySQL(使用Mac遠(yuǎn)程訪問(wèn)),本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-06-06
  • mysql中找不到my.ini文件的問(wèn)題及解決

    mysql中找不到my.ini文件的問(wèn)題及解決

    這篇文章主要介紹了mysql中找不到my.ini文件的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 深入理解MySQL重做日志 redo log

    深入理解MySQL重做日志 redo log

    redo log:被稱為物理日志,記錄的就是最終修改后的按頁(yè)面存儲(chǔ)的數(shù)據(jù)頁(yè),直接存數(shù)據(jù)最終的狀態(tài),用于確保事務(wù)的持久性,本文主要介紹了MySQL重做日志 redo log,感興趣的了解一下
    2022-04-04
  • Windows 下 MySQL 8.X 的安裝教程

    Windows 下 MySQL 8.X 的安裝教程

    這篇文章主要介紹了Windows 下 MySQL 8.X 的安裝教程,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-11-11
  • SQL實(shí)現(xiàn)數(shù)據(jù)過(guò)濾流程詳解

    SQL實(shí)現(xiàn)數(shù)據(jù)過(guò)濾流程詳解

    這篇文章主要介紹了SQL實(shí)現(xiàn)數(shù)據(jù)過(guò)濾流程,當(dāng)我們?cè)赟QL中查詢數(shù)據(jù)時(shí),肯定是有一些數(shù)據(jù)是我們不需要的,所以我們此時(shí)就要對(duì)數(shù)據(jù)進(jìn)行過(guò)濾,以篩選出我們僅需要的數(shù)據(jù)
    2023-01-01
  • 詳解記錄MySQL中l(wèi)ower_case_table_names的坑

    詳解記錄MySQL中l(wèi)ower_case_table_names的坑

    這篇文章主要介紹了詳解記錄MySQL中l(wèi)ower_case_table_names的坑,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • MySQL5綠色版windows下安裝總結(jié)(推薦)

    MySQL5綠色版windows下安裝總結(jié)(推薦)

    這篇文章主要介紹了MySQL5綠色版windows下安裝總結(jié),需要的朋友可以參考下
    2017-03-03

最新評(píng)論