亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有沒有人遇到過這個問題哈!面試遇到的SQL語句編寫問題,求解答

有沒有人遇到過這個問題哈!面試遇到的SQL語句編寫問題,求解答

慕容708150 2019-08-10 10:57:51
題目描述面試遇到這樣一個問題:有一個用戶下載文件的表'file_download',如下:iduidfidstatus1110211132114220522161317330...uid代表用戶ID,fid代表文件ID,`status代表文件下載狀態,0是失敗,1是成功。用戶若下載文件失敗,可以繼續下載,一旦下載成功,就不會再下載該文件。讓查出用戶第一次下載文件就成功的記錄。自己的思路我給的答案是這樣的:SELECT*FROMfile_downloadGROUPBYuid,fidHAVING`status`=1;但是面試官似乎不太滿意,問我是否還有其他的方法?
查看完整描述

2 回答

?
侃侃無極

TA貢獻2051條經驗 獲得超10個贊

隨便寫的…應該不是最優解,但是結果應該是對的
selectsum(id)id,uid,fid,count(*)c,sum(status)s
fromfile_download
groupbyuid,fid
havingc=1
ands=1;
解釋一下,因為要查第一次下載文件就成功的記錄,所以
下載要成功,需要有status=1的記錄
下載成功之后就不會再下載,所以sum(status)groupbyuid,fid得到的結果只有0或者1,1表示成功
第一次就下載成功表示只下載了一次,所以需要count(*)groupbyuid,fid是1
不知道是否需要id,因為聚合了所以不能直接拿id,但是因為對應的數據只有一條,所以隨便放一個sum(id)或者min(id)之類的都可以取到id
                            
查看完整回答
反對 回復 2019-08-10
?
慕俠2389804

TA貢獻1719條經驗 獲得超6個贊

SELECTcount(*)c,id,uid,fid,statusFROMfile_downloadGROUPBYuid,fidhavingc=1
                            
查看完整回答
反對 回復 2019-08-10
  • 2 回答
  • 0 關注
  • 204 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號