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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 笔试题_MySQL笔试题详解(一)(中等难度)

發布時間:2024/10/8 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 笔试题_MySQL笔试题详解(一)(中等难度) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有一位學生在找數據分析工作的時候,遇到一個筆試題,內容如下:

現有注冊用戶表table_user,有兩個字段:user_id(用戶id)、reg_tm(注冊時間)。有訂單表table_order,有三個字段:order_id(訂單號)、order_tm(下單時間)、user_id(用戶id)。

查詢2019年1月1日至今,每天的注冊用戶數,下單用戶數,以及注冊當天即下單的用戶數(請盡量在一個 sql語句中實現)。

題意分析:

1.要查看的是每一天的情況,所以要以日期為維度進行匯總觀測,也就是group by后面跟日期字段;

2.要看每天的注冊用戶數(來自用戶表),每天的下單用戶數(來自訂單表),所以要將用戶表和訂單表做橫向連接;

3.兩表連接的字段是什么?第一感覺應該是user_id,但是我們通過user_id字段連接兩表后,兩表都有時間字段,那以哪個字段為分組依據呢?比如用戶「小包總」在6月10日注冊了網站,在6月20日下了第一筆訂單,以user_id字段連接兩表,一個user_id對應兩個時間,以注冊時間為分組依據,得不到準確的當日下單用戶數,以下單時間為分組依據,得不到準確的當日注冊用戶數;

4.不能用user_id做連接字段,需要用用戶表的注冊時間和訂單表的下單時間作為連接字段。如果兩個表的時間范圍保持一致,那直接做表連接沒有問題,但如果時間范圍不一致,比如用戶表在6月20日沒有注冊量,在訂單表6月20日有多筆訂單,用戶注冊表在6月10日有多位用戶注冊,而訂單表6月10日沒有訂單。而在MySQL里面只有左連、右連、內連三種連接方式,不管以何種方式做連接,總會丟失部分日期記錄;

5.只有外連才會不丟失日期數據,而MySQL里面沒有外連方式,這要怎么辦?我們可以通過union縱向鏈接的方式構造外連一樣的結果;

綜合以上分析,得到解題思路:

1.將注冊表的注冊時間和訂單表的下單時間做縱向鏈接,生成一個臨時表,只有一個字段 reg_tm:

select reg_tm from table_user

union

select order_tm from table_order;

2.再用上表和注冊表及訂單表做左連接:

select * from(

select reg_tm from table_user

union

select order_tm from table_order) as table_date

left join table_user on table_date.reg_tm=table_user.reg_tm

left join table_order on table_date.reg_tm=table_order.order_tm;

3.題目要求查詢2019年1月1日至今的數據情況,把這個條件加在where后面:

select * from(

select reg_tm from table_user

union

select order_tm from table_order) as table_date

left join table_user on table_date.reg_tm=table_user.reg_tm

left join table_order on table_date.reg_tm=table_order.order_tm

where table_date.reg_tm>="2019-01-01";

4.題目是查看每天的注冊用戶數,下單用戶數,以及注冊當天即下單的用戶數;需要對日期進行分組,注冊用戶數是對注冊表的user_id進行計數,下單用戶數是對訂單表的user_id進行計數,注冊當天即下單的用戶數是對注冊表的注冊時間與訂單表的注冊時間相等的user_id進行計數。需要注意的是,在將臨時表table_date與table_user左連時,對應關系是一對多,生成的結果是一個多表,再與table_order左連,對應關系是多對多,多對多的情況下,數據一定是有重復的,所以需要去重處理(distinct函數)。另外把沒有結果的null替換成0(ifnull函數),最終代碼如下:

select table_date.reg_tm,ifnull(count(distinct table_user.user_id),0) 注冊用戶數,ifnull(count(distinct table_order.user_id),0) 下單用戶數,ifnull(count(distinct if(table_user.reg_time=table_order.order_time and table_user.user_id=table_order.user_id,table_user.user_id,null)),0) 下單用戶數

from(

select reg_tm from table_user

union

select order_tm from table_order) as table_date

left join table_user on table_date.reg_tm=table_user.reg_tm

left join table_order on table_date.reg_tm=table_order.order_tm

where table_date.reg_tm>="2019-01-01"

group by table_date.reg_tm;

題目是沒有數據的,如果直接看看不懂的話,可以自己先構造一個數據,再嘗試文中的代碼,一步一步理解。

內容較多,可以先碼后看,如果對你有幫助,給個贊和關注哈~,如有其它解題思路,歡迎交流~

總結

以上是生活随笔為你收集整理的mysql 笔试题_MySQL笔试题详解(一)(中等难度)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美日韩伦理片 | 免费污视频在线观看 | 国模私拍xvideos私拍 | 懂色av一区二区三区四区 | 欧美老熟妇xb水多毛多 | 91精品福利视频 | 中文字幕一区二区在线老色批影视 | av在线不卡免费观看 | 亚洲AV无码精品色 | 在线播放av网站 | 婷婷综合激情 | 特极毛片 | 欧美老熟 | 在线免费av播放 | 涩涩成人网 | 天天草天天草 | 亚洲高清天堂 | 婷婷网五月天 | 久久久久久久久久久久久久久久久 | 国产视频污| 精品综合| 国产精品三级视频 | 美女隐私免费 | 人妻夜夜爽天天爽三区麻豆av网站 | 男女涩涩视频 | 9l视频自拍九色9l视频 | 在线国产一区二区三区 | 日韩一二三区 | 噜噜狠狠狠狠综合久久 | 欧美做爰啪啪xxxⅹ性 | 日韩一区二区三区不卡视频 | 日在线视频 | 超碰在线中文 | 国产又黄又大又爽 | 亚洲狼人av | 在线日韩一区二区 | 色图自拍| 三级av网站| 天天碰天天操 | 五月婷婷久久综合 | 专业操老外 | 免费av电影网址 | 一本到免费视频 | 做视频| 免费无码不卡视频在线观看 | 偷拍夫妻性生活 | 国产一级久久久久毛片精品 | www.av免费| 久草视频在线资源 | 欧美巨大另类极品videosbest | 怡红院久久 | 亚洲成人中文字幕在线 | 青青草视频免费看 | 黄色网址最新 | av私库 | 久久亚洲一区二区三区四区五区 | 91午夜视频| 公侵犯人妻一区二区三区 | 樱花动漫无圣光 | 伊人午夜 | 福利片一区二区 | 久操伊人 | 在线观看的av网址 | 色综合久久久久久久 | 欧美综合视频在线 | 成人免费看片视频 | 九九精品视频在线观看 | 亚洲欧美日韩精品一区 | 午夜免费精品 | 粗暴video蹂躏hd | 手机免费av| 人妻精品一区二区三区 | 日皮视频免费看 | 欧美色综合网 | 99国产精品99| 黄色一级在线视频 | 中国免费看的片 | 国产人妖一区二区 | 黄色免费网 | 中国女人和老外的毛片 | 日韩美女做爰高潮免费 | 黄色视屏在线播放 | 亚洲精品美女网站 | 日噜噜夜噜噜 | 欧美久久久 | 黄色亚洲视频 | 亚洲天堂免费看 | 波多野结衣一区二区三区中文字幕 | 男人添女人下部高潮全视频 | 日韩欧洲亚洲AV无码精品 | 熟妇人妻系列aⅴ无码专区友真希 | 亚洲一区影视 | 亚洲福利视频一区二区三区 | 中文字幕在线播放不卡 | 日韩少妇一区二区 | 麻豆视频在线观看 | 久草在现| 小妹色播| 国产久在线|