數(shù)據(jù)分析師SQL試題合集
點擊上方“數(shù)據(jù)管道”,選擇“置頂星標”公眾號
干貨福利,第一時間送達

整理來源自:SQL數(shù)據(jù)庫開發(fā)
原作者:adorable_new 來自簡書
簡單——會考察一些group by & limit之類的用法,或者平時用的不多的函數(shù)比如rand()類;會涉及到一些表之間的關(guān)聯(lián)
中等——會考察一些窗口函數(shù)的基本用法;會有表之間的關(guān)聯(lián),相對tricky的地方在于會有一些自關(guān)聯(lián)的使用
困難——會有中位數(shù)或者更加復雜的取數(shù)概念,可能要求按照某特定要求生成列;一般這種題建中間表會解得清晰些
order訂單表,字段為:goods_id, amount ;
pv 瀏覽表,字段為:goods_id,uid;
goods按照總銷售金額排序,分成top10,top10~top20,其他三組
create?table?if?not?exists?test.nil_goods_category as?
select?goods_id
,case?when?nn<= 10?then?'top10'
when?nn<= 20?then?'top10~top20'
else?'other'?end?as?goods_group
from
(
select?goods_id
,row_number() over(partition?by?goods_id order?by?sale_sum desc) as?nn
from
????(
select?goods_id,sum(amount) as?sale_sum
from?order?
group?by?1
????) aa
) bb;
select?b.goods_group,count(distinct?a.uid) as?num
from?pv a
left?join?test.nil_goods_category b
on?a.goods_id = b.goods_id
group?by?1;(提示:可以左右滑動代碼)
1.
select?count(distinct?g_id) as?event_goods_num
from?goods_event
where?(t1<=t4 and?t1>=t3)
or?(t2>=t3 and?t2<=t4)
2.
select?count(distinct?g_id) as?event_goods_num
from?goods_event
where?(t1<=t4 and?t1>=t3)
union?allselect?a.goods_id,a.time
from?event?a
inner?join
(
select?goods_id,count(*)
from?event
group?by?gooods_id
order?by?count(*) desc
limit?1
) b
on?a.goods_id = b.goods_id
order?by?a.goods_id,a.time descdrop?table?if?exists?koo.nil_temp0222_a2;
create?table?if?not?exists?koo.nil_temp0222_a2 as
select?*
????,row_number() over(partition?by?userid order?by?inserttime) as?nn1
from?
(
select?a.*
????,b.inserttime as?inserttime_aftr
????,datediff(b.inserttime,a.inserttime) as?session_diff
from
??(
select?userid,inserttime
??????,row_number() over(partition?by?userid order?by?inserttime asc) nn
from?koo.nil_temp0222
where?userid = 1900000169
??) a
left?join?
??(
select?userid,inserttime
??????,row_number() over(partition?by?userid order?by?inserttime asc) nn
from?koo.nil_temp0222
where?userid = 1900000169?
??) b
on?a.userid = b.userid and?a.nn = b.nn-1
) aa
where?session_diff >10?or?nn = 1
order?by?userid,inserttime;
drop?table?if?exists?koo.nil_temp0222_a2_1;
create?table?if?not?exists?koo.nil_temp0222_a2_1 as
select?a.*
,case?when?b.nn is?null?then?a.nn+3?else?b.nn end?as?nn_end
from?koo.nil_temp0222_a2 a
left?join?koo.nil_temp0222_a2 b
on?a.userid = b.userid
and?a.nn1 = b.nn1 - 1;
select?a.*,b.nn1 as?session_id
from
(
select?userid,inserttime
????,row_number() over(partition?by?userid order?by?inserttime asc) nn
from?koo.nil_temp0222
where?userid = 1900000169
) a
left?join?koo.nil_temp0222_a2_1 b
on?a.userid = b.userid
and?a.nn>=b.nn
and?a.nnselect?*
from?
(
select?*
??,rank() over(partition?by?mm order?by?dd desc) as?nn1
??,row_number() over(partition?by?mm,dd order?by?inserttime desc) as?nn2
from
??(
select?
cast(right(to_date(inserttime),2) as?int) as?dd,
month(inserttime) as?mm,userid,inserttime
from?koo.nil_temp0222
) aa
) bb
where?nn1 = 1?and?nn2<=3;select?a.*,b.num as?num2,c.num as?num3
from?table??a
left?join?table?b
on?a.userid = b.userid
and?a.dt = date_add(b.dt,-1)
left?join?table?c
on?a.userid = c.userid
and?a.dt = date_add(c.dt,-2)
where?b.num>100
and?a.num>100
and?c.num>100每個特征列都完全匹配的情況下
最多有一個特征列不匹配,其他19個特征列都完全匹配,但哪個列不匹配未知
1.
select?aa.*
from?
(
select?*,concat(d1,d2,d3……d20) as?mmd
from?table
) aa
left?join?
(
select?id,concat(d1,d2,d3……d20) as?mmd
from?table
) bb
on?aa.id = bb.id
and?aa.mmd = bb.mmd
2.
select?a.*,sum(d1_jp,d2_jp……,d20_jp) as?same_judge
from?
(
select?a.*
??,case?when?a.d1 = b.d1 then?1?else?0?end?as?d1_jp
??,case?when?a.d2 = b.d2 then?1?else?0?end?as?d2_jp
??,case?when?a.d3 = b.d3 then?1?else?0?end?as?d3_jp
??,case?when?a.d4 = b.d4 then?1?else?0?end?as?d4_jp
??,case?when?a.d5 = b.d5 then?1?else?0?end?as?d5_jp
??,case?when?a.d6 = b.d6 then?1?else?0?end?as?d6_jp
??,case?when?a.d7 = b.d7 then?1?else?0?end?as?d7_jp
??,case?when?a.d8 = b.d8 then?1?else?0?end?as?d8_jp
??,case?when?a.d9 = b.d9 then?1?else?0?end?as?d9_jp
??,case?when?a.d10 = b.d10 then?1?else?0?end?as?d10_jp
??,case?when?a.d20 = b.d20 then?1?else?0?end?as?d20_jp
??,case?when?a.d11 = b.d11 then?1?else?0?end?as?d11_jp
??,case?when?a.d12 = b.d12 then?1?else?0?end?as?d12_jp
??,case?when?a.d13 = b.d13 then?1?else?0?end?as?d13_jp
??,case?when?a.d14 = b.d14 then?1?else?0?end?as?d14_jp
??,case?when?a.d15 = b.d15 then?1?else?0?end?as?d15_jp
??,case?when?a.d16 = b.d16 then?1?else?0?end?as?d16_jp
??,case?when?a.d17 = b.d17 then?1?else?0?end?as?d17_jp
??,case?when?a.d18 = b.d18 then?1?else?0?end?as?d18_jp
??,case?when?a.d19 = b.d19 then?1?else?0?end?as?d19_jp
from?table?a
left?join?table?b
on?a.id = b.id
) aa
where?sum(d1_jp,d2_jp……,d20_jp) = 19t的字段有:uid,goods_id,star。uid是用戶id
goodsid是商品id
star是用戶對該商品的評分,值為1-5
U0 g1 4
U1 g0 3
U1 g1 1
select?aa.uid1,aa.uid2
,sum(star_multi) as?result
from?
(
select?a.uid as?uid1
??,b.uid as?uid2
??,a.goods_id
??,a.star * b.star as?star_multi
from?t a
left?join?t b
on?a.goods_id = b.goods_id
and?a.udi<>b.uid
) aa
group?by?1,2select?uid1,uid2,sum(multiply) as?result
from
(select?t.uid as?uid1, t.uid as?uid2, goods_id,a.star*star as?multiply
from?a left?join?b
on?a.goods_id = goods_id
and?a.uid<>uid) aa
group?by?goodsselect?a.*
,b.s_mid_n
,c.l_mid_n
,avg(b.s_mid_n,c.l_mid_n)
from?
(
select?
case?when?mod(count(*),2) = 0?then?count(*)/2?else?(count(*)+1)/2?end?as?s_mid
??,case?when?mod(count(*),2) = 0?then?count(*)/2+1?else?(count(*)+1)/2?end?as?l_mid
from?table?
) a
left?join?
(
select?id,num,row_number() over(partition?by?id?order?by?num?asc) nn
from?table
) b
on?a.s_mid = b.nn
left?join?
(
select?id,num,row_number() over(partition?by?id?order?by?num?asc) nn
from?table
) c
on?a.l_mid = c.nnselect?distinct?credit_level
from?
(
select?credit_level,count(distinct?nn) as?number
from
??(
select?userid,credit_level,inserttime,month(inserttime) as?mm
????,weekofyear(inserttime) as?week
????,dense_rank() over(partition?by?credit_level,month(inserttime) order?by?weekofyear(inserttime) asc) as?nn
from?koo.nil_temp0222
where?substring(inserttime,1,7) = '2019-12'
order?by?credit_level ,inserttime
??) aa
group?by?1??
) bb
where?number?= (select?count(distinct?weekofyear(inserttime))
from?koo.nil_temp0222
where?substring(inserttime,1,7) = '2019-12')作者:adorable_new
來源:簡書
本文為轉(zhuǎn)載分享,如侵權(quán)請聯(lián)系后臺刪除
評論
圖片
表情
