日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQL 中去重的三种方法

發(fā)布時(shí)間:2024/5/8 数据库 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL 中去重的三种方法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

點(diǎn)擊關(guān)注上方“逆鋒起筆”,

設(shè)為“置頂或星標(biāo)”,第一時(shí)間送達(dá)干貨

blog.csdn.net/xienan_ds_zj/article/details/103869048

作者:程序員的成長之路

SQL去重是數(shù)據(jù)分析工作中比較常見的一個(gè)場景,今天給大家具體介紹3種去重的方法。

在使用SQL提數(shù)的時(shí)候,常會(huì)遇到表內(nèi)有重復(fù)值的時(shí)候,比如我們想得到 uv (獨(dú)立訪客),就需要做去重。

在 MySQL 中通常是使用 distinct 或 group by子句,但在支持窗口函數(shù)的 sql(如Hive SQL、Oracle等等) 中還可以使用 row_number 窗口函數(shù)進(jìn)行去重。

舉個(gè)栗子,現(xiàn)有這樣一張表 task:

備注:

  • task_id: 任務(wù)id;

  • order_id: 訂單id;

  • start_time: 開始時(shí)間

注意:一個(gè)任務(wù)對(duì)應(yīng)多條訂單

我們需要求出任務(wù)的總數(shù)量,因?yàn)?task_id 并非唯一的,所以需要去重:

distinct

--?列出?task_id?的所有唯一值(去重后的記錄) --?select?distinct?task_id --?from?Task;--?任務(wù)總數(shù) select?count(distinct?task_id)?task_num from?Task;

distinct 通常效率較低。它不適合用來展示去重后具體的值,一般與 count 配合用來計(jì)算條數(shù)。

distinct 使用中,放在 select 后邊,對(duì)后面所有的字段的值統(tǒng)一進(jìn)行去重。比如distinct后面有兩個(gè)字段,那么 1,1 和 1,2 這兩條記錄不是重復(fù)值 。

group by

--?列出?task_id?的所有唯一值(去重后的記錄,null也是值) --?select?task_id --?from?Task --?group?by?task_id;--?任務(wù)總數(shù) select?count(task_id)?task_num from?(select?task_idfrom?Taskgroup?by?task_id)?tmp;

row_number

row_number 是窗口函數(shù),語法如下:

row_number() over (partition by <用于分組的字段名> order by <用于組內(nèi)排序的字段名>)

其中 partition by 部分可省略。

--?在支持窗口函數(shù)的?sql?中使用 select?count(case?when?rn=1?then?task_id?else?null?end)?task_num from?(select?task_id,?row_number()?over?(partition?by?task_id?order?by?start_time)?rnfrom?Task)?tmp;

此外,再借助一個(gè)表 test 來理理 distinct 和 group by 在去重中的使用:

--?下方的分號(hào);用來分隔行 select?distinct?user_id from?Test;????--?返回?1;?2select?distinct?user_id,?user_type from?Test;????--?返回1,?1;?1,?2;?2,?1select?user_id from?Test group?by?user_id;????--?返回1;??2select?user_id,?user_type from?Test group?by?user_id,?user_type;????--?返回1,?1;?1,?2;?2,?1select?user_id,?user_type from?Test group?by?user_id;???? -- Hive、Oracle等會(huì)報(bào)錯(cuò),mysql可以這樣寫。 --?返回1, 1 或 1, 2 ; 2, 1(共兩行)。只會(huì)對(duì)group by后面的字段去重,就是說最后返回的記錄數(shù)等于上一段sql的記錄數(shù),即2條 --?沒有放在group?by?后面但是在select中放了的字段,只會(huì)返回一條記錄(好像通常是第一條,應(yīng)該是沒有規(guī)律的)

逆鋒起筆是一個(gè)專注于程序員圈子的技術(shù)平臺(tái),你可以收獲最新技術(shù)動(dòng)態(tài)、最新內(nèi)測資格、BAT等大廠的經(jīng)驗(yàn)、精品學(xué)習(xí)資料、職業(yè)路線、副業(yè)思維,微信搜索逆鋒起筆關(guān)注!

又一本 Python 可視化好書來了!

GitHub 人臉屬性編輯神器橫空出世!

代碼生成器用起來,是真的爽~

一次完整的 Http 請(qǐng)求過程

一本免費(fèi)的深度學(xué)習(xí)漫畫書

更多精彩內(nèi)容,請(qǐng)關(guān)注「數(shù)據(jù)前線」

記得點(diǎn)「贊」「在看」

愛你們?

總結(jié)

以上是生活随笔為你收集整理的SQL 中去重的三种方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美日韩精品二区 | 国产精品综合 | 又污又黄的网站 | 中文字幕在线观看高清 | 欧美综合在线一区 | 动漫玉足吸乳羞免费网站玉足 | 性感美女av在线 | 欧美自偷自拍 | 18在线观看免费入口 | 视频一区二区在线 | 欧美日韩亚洲国产一区 | 中文有码视频 | 亚洲精品自拍视频 | 最近中文字幕在线 | 久久aaa| 古装做爰无遮挡三级视频 | 中文字幕一区三区 | 红桃视频网站 | 可以看黄色的网站 | 综合国产在线 | 国产又黄又粗的视频 | 国产毛片91 | 日本高清黄色电影 | 久久曹| 日本黄页网站免费大全 | 色窝网 | 亚洲天堂成人在线观看 | 97超碰色 | 一级艳片新婚之夜 | 久久精品国产亚洲a | 在线色网址 | 亚洲网站av| 亚洲色图13p | 先锋av网| 狠狠老司机 | 亚洲网站在线看 | 视频免费1区二区三区 | 能免费看av的网站 | 女人床技48动态图 | h片免费观看 | 免费国产a | 99re视频在线播放 | 成人在线观看国产 | 免费大片黄在线观看 | 国产乱码一区 | 亚洲最大黄色网址 | 久久无码人妻一区二区三区 | yw视频在线观看 | 久久久久久久久久久久久国产 | 五月天色站 | 亚洲永久网站 | 红桃视频黄色 | 免费精品视频在线 | 女人18岁毛片 | 波多野结衣在线一区 | 欧美性天堂 | 青青草精品在线 | 激情伦成人综合小说 | 欧美熟妇另类久久久久久不卡 | 午夜看片 | 国产成人一区二区三区影院在线 | 超碰老司机 | 欧美激情在线狂野欧美精品 | www.xxx在线观看 | 午夜精品久久久久久久久久久久久 | 在线国产91 | 我想看一级黄色片 | 国产suv精品一区二区68 | 日韩精品视频免费 | 欧美区一区二 | 国产性猛交xxxⅹ交酡全过程 | 黄色中文字幕 | 极品探花在线 | 人妻少妇无码精品视频区 | 99re在线 | 欧美a天堂 | 视频在线免费观看 | 91视频免费在线 | 日本黄色片| 正在播放久久 | 三级黄色片免费观看 | 女女同性女同一区二区三区按摩 | 国产日本一区二区三区 | 亚洲精品日韩综合观看成人91 | 欧美性受xxxx白人性爽 | 日本一级免费视频 | 我们的生活第五季在线观看免费 | 久久久久久91香蕉国产 | 日本免费网址 | 永久看看免费大片 | 天天看黄色 | 精品xxx | 欧美黄色a级 | 中文字幕一区二区三区免费看 | 国产中文字幕在线播放 | 欧美36p | 国产精品99久久久久久宅男 | 在线观看网页视频 | 欧美高清视频在线观看 |