色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

SQL中去除重復數據的幾種方法匯總(窗口函數對數據去重)

瀏覽:92日期:2023-05-02 10:03:14
目錄
  • 方法1:distinct
  • 方法2:group by
  • 方法3:窗口函數

使用SQL對數據進行提取和分析時,我們經常會遇到數據重復的場景,需要我們對數據進行去重后分析。

以某電商公司的銷售報表為例,常見的去重方法我們用到distinct 或者group by 語句, 今天介紹一種新的方法,利用窗口函數對數據去重。

【字段解釋】

訪客id:進入店鋪瀏覽寶貝的客戶

瀏覽時間:訪客進入店鋪瀏覽頁面的日期

瀏覽時常:訪客進入店鋪瀏覽頁面的時長

現在需要知道店鋪里每個訪客和對應的瀏覽日期(每個訪客同一天瀏覽多次算做一次記錄)

【解題思路】

方法1:distinct

SQL書寫如下:

select distinct 訪客id ,瀏覽時間      from 淘寶日銷售數據表;

查詢結果:

這里用distinct語句多字段進行去重的時候,需要特別注意2點:

1)distinct語法規定對單字段、多字段去重,必須放在第一個查詢字段前。

2)如果對表中多列字段進行去重,去重的過程就是將多字段作為整體去重,比如上面的例子,我們將訪客id和瀏覽時間為整體去去重,而不是對訪客id單獨去重后再對姓名單獨去重,所以會出現相同的訪客id對應不同的瀏覽時間。

方法2:group by

SQL書寫如下:

select 訪客id ,瀏覽時間     from 淘寶日銷售數據表group by 訪客id ,瀏覽時間;

查詢結果:

group by對訪客id 和瀏覽時間進行分組,分組匯總后改變了表的行數,一行只有一個類別,這里使用group by后會將訪客id 和瀏覽時間作為一個類別保留,重復的就會不顯示。

方法3:窗口函數

使用窗口函數進行去重時,比distinct和group by稍微復雜些,窗口函數不會減少原表中的行數,而是對字段進行分組后排序。詳細的窗口函數講解

窗口函數的基本語法如下:

<窗口函數> over (partition by <用于分組的列名>order by <用于排序的列名>)

根據題目要求得出每個訪客和對應的瀏覽日期,我們對訪客id ,瀏覽時間進行分組,對瀏覽時長(秒)進行排序。

SQL書寫如下:

select 訪客id ,瀏覽時間 ,row_number()over(partition by 訪客id ,瀏覽時間order by 瀏覽時長(秒)) as 排名     from 淘寶日銷售數據表;

查詢結果:

窗口函數查詢按照每個客戶和瀏覽日期分組,如果同一天有幾次瀏覽,會根據點贊數排序,篩選排名為1,即可得出每個訪客和對應的瀏覽日期。

SQL書寫如下:

select 訪客id ,瀏覽時間 ,row_number()over(partition by 訪客id ,瀏覽時間order by 瀏覽時長(秒)) as 排名     from 淘寶日銷售數據表;

查詢結果:

去除重復項的三種操作,你get了嗎?歡迎評論區補充你的去重辦法~

到此這篇關于SQL中去除重復數據的幾種方法,我一次性都告你?的文章就介紹到這了,更多相關sql去除重復數據內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

標簽: MsSQL
主站蜘蛛池模板: 国产精品久久福利网站 | 精品一区二区三区三区 | 国产一级毛片一区二区三区 | 外国成人网在线观看免费视频 | 在线播放国产视频 | 欧美成人手机视频 | 免费的毛片 | 99免费精品 | 亚洲人的天堂男人爽爽爽 | 一级黄色美女视频 | 欧美jizzhd精品欧美 | 欧美xxxx在线视频 | 成人性色生活片全黄 | 澳门一级毛片手机在线看 | a级成人毛片久久 | 美女啪啪网站又黄又免费 | 一级片免费网址 | 一级特黄一欧美俄罗斯毛片 | 久久综合九九亚洲一区 | 免费老外的毛片清高 | 88av视频在线 | 高清欧美日本视频免费观看 | 九九精品免费观看在线 | 99精品国产成人一区二区 | 午夜香港三级a三级三点 | 国产精品三级手机在线观看 | 国产盗摄一区二区 | 老司机午夜精品网站在线观看 | 美女双腿打开让男人桶爽网站 | 中国美女乱淫免费看视频 | 日韩欧美一区二区在线 | 国产成人久久一区二区三区 | 久久久久琪琪精品色 | 亚洲最黄视频 | 国产成人在线免费观看 | 国产成人免费高清视频网址 | 国产视频在线免费观看 | 亚洲视频在线免费看 | 99精品网站 | 色综合久久88色综合天天提莫 | 午夜视频一区二区 |