阿里数据分析岗在线笔试的一道sql题

题目:已知表名A,字段分别为dt(交易日期,格式为20180101)、seller_id(卖家id)、buyer_id(买家id),item_id(商品),amt(交易金额,单位元): 写出下面sql语句:  统计201807~201809期间,卖家id:123,店铺内交易金额最高的商品id以及购买该商品id 金额最高的买家id
这种题型最简便的写法应该是怎样的,有大佬知道么😅
#阿里巴巴##笔试题目##数据分析师#
全部评论
select item_id, buyer_id, sum(amt) as buyer_all_amt from A where where dt >= '20180701' and dt <= '20180930' and seller_id = 123  and  item_id in (select a.item_id from           (select item_id, sum(amt) as all_amt from A           where dt >= '20180701' and dt <= '20180930' and seller_id = 123            group by item_id            order by all_amt desc            limit 1)  a ) group by  item_id, buyer_id  order by buyer_all_amt desc limit 1
点赞 回复 分享
发布于 2019-04-13 16:47
select a.item_id,b.buyer_id from ( select item_id,max(sum(amt)) as max_sum_amt from A where dt>=201807 and dt<=201809 and buyer_id=123 group by 1 )a left join  ( select item_id,buyer_id,max(sum(amt)) as max_sum_amt from A where dt>=201807 and dt<=201809 group by 1,2 ) b on a.item_id=b.item_id
5 回复 分享
发布于 2019-08-22 21:03
0
点赞 回复 分享
发布于 2019-04-29 04:00
with tmp as( select c.item_id from (select b.item_id, b.sum_amt, rank()over(order by b.sum_amt desc) rnk from (select item_id, sum(amt) sum_amt from (select buyer_id, item_id, amt from A  where month(dt) in (7,8,9) and seller_id = '123' )a group by item_id )b )c where c.rnk = 1)      select buyer_id, item_id from A where item id = (select item_id from tmp) group by buyer_id, item_id order by SUM(amt) desc limit 1
点赞 回复 分享
发布于 2019-08-20 22:09
select item_id,buyer_id from(      select item_id,buyer_id,dense_rank() over(order by tot_amt desc) as ranking1,      dense_rank() over(partition by item_id order by amt desc) as ranking2 from (            select item_id, buyer_id,amt,sum(amt) over (partition by item_id order by amt ) as tot_amt             from A             where dt>=201807 and dt <=201809 and seller_id= 123) as a ) as b where b.ranking1 = 1 and b.ranking2=1; 我的方法是采用窗口函数,先计算每个item_id的总金额tot_amt,然后用dense_rank()分别对tot_amt、amt排序,再根据条件ranking=1,选择 item_id,buyer_id  ps:采用rank()函数是考虑到可能有销售总额相同的 item_id以及最高购买金额相同的buyer_id,若直接采用limit1来选择最大值可能导致选择的数据不全
点赞 回复 分享
发布于 2019-08-22 20:27
老哥也是闲鱼吗
点赞 回复 分享
发布于 2019-08-22 20:31
我也收到笔试通知了是一个小时,不知道是考算法还是sql
点赞 回复 分享
发布于 2019-08-23 22:57
--获得交易金额最高的商品id with tmp_id as ( select  item_id  ,max(amt_total) from (select    item_id   ,sum(amt) as amt_total from A where dt >= '20180701' and dt <= '20180901' and seller_id = '123' group by item_id) select   a1.item_id  ,a2.buyer_id  ,max(a2.amt) as max_amt from (select item_id from tmp_id) a1 left join (select    item_id   ,buyer_id   ,amt from A where dt >= '20180701' and dt <= '20180901' and seller_id = '123') a2 on A1.item_id = A2.item_id group by a1.item_id, a2.buyer_id 只会很复杂的😂
点赞 回复 分享
发布于 2019-08-27 10:40
select b.*, distinct c.buyer_id, max(gmv_by_buyer)over(partition by c.buyer_id) as 最豪买家 from (select distinct b.item_id , max(gmv_by_item)over(partition by b.item_id)as 最热销单品 from (select item_id, sum(amp)over(partition by item_id ) as gmv_by_item from A  where month(dt) in (7,8,9) and seller_id = '123' )bb )b join  (select  item_id, buyer_id , sum(amp)over(partition by buyer_id ) as gmv_by_buyer from A  where month(dt) in (7,8,9) and seller_id = '123' )c on b.item_id=c.item_id
点赞 回复 分享
发布于 2019-08-30 00:41
with max_item_id as (select item_id ( select item_id,sum(amt) as sum_amt,rom_number() over(order by sum(amt) desc ) rn from table_a where to_date(dt,'yyyymmdd')>=to_date('20180701','yyyymmdd') and to_date(dt,'yyyymmdd')<=to_date('20180931','yyyymmdd') and a.seller_id='123' group by item_id )t where t.rn=1 ) select item_id,buyer_id from ( select a.item_id,a.buyer_id,sum(a.amt) sum_buyer_id,rom_number() over(order by sum(a.amt) desc ) rn from table_a a join max_item_id b on a.item_id=b.item_id where to_date(dt,'yyyymmdd')>=to_date('20180701','yyyymmdd') and to_date(dt,'yyyymmdd')<=to_date('20180931','yyyymmdd') and a.seller_id='123' group by a.item_id,a.buyer_id ) t where t.rn=1 ;
点赞 回复 分享
发布于 2023-06-16 12:40 河南

相关推荐

#我和xx公司的爱恨情仇#&nbsp;怎么会有这么**的公司!实习ld跟我说,在这实习秋招会有很大优势,没太大问题;线下一面二面水的很,手撕都是easy,二面面试官甚至说,你随便手撕个题目就行,找个代码量多的题目,然后我写了一个bfs图算法。主管面也是基本上纯聊天,然后甚至问我预期薪资,我说虽然我有互联网公司offer但是更想来华子,认可企业文化。面试完后,保温电话说根据面评开14a没问题,过了一段时间后去问了对接人,先说11月底开,后来说12月底开,昨天去问,他说你不是签了美团了吗,我们已经发完全部offer了。tmd那你不早说,我还在这等。我问了我们这个部门的其他实习生(三级部门下8个实习生,我们四级部门下就有5个,按理说我们部门应该缺人吧),结果其他实习生全军覆没,之前都收到降温电话要签个其他offer保底,实习生中甚至有人空白三方在allin华子,最逆天的是,其中一个是优秀实习生,他也没开出来。问那个优秀实习生,他说他在这实习时接口人天天给他洗脑说,在这实习只有不想来的,没有泡不出来的(如图1)。我接口人也是这么跟我说的,说我们2012实验室下面都偏预研,部门加班少,我们部门确实还行,而且本身华为比互联网稳定,后期还有股票,退休保留股票一直分红(补充:只有5%的人可以熬到40岁以上退休分股),你看看华为那么多od,人家为什么社招想来华为当od呢,因为华为真的稳定啊(后来想想他们来当od应该是没有更好的选择了吧,xhs上那个清华姚班都来华为当od)。我跟几个实习生已经转投其他部门了,那个优秀实习生去找别的部门hr时,人家问:你优秀实习生也要换部门吗,没遇到你这种情况之前为了选华为还是美团我还纠结了1个多月,现在想想真**,这**公司谁来谁知道,华子稳定个**,这里补充一下,35岁下岗就是华子最早提出来的。还有华为内部转岗的事,后来问了下很多大公司都可以内转,华子内转还要背绩效,去新部门会有很大绩效压力,原部门绩效太差还不能转,****。这**泡池子机制也是遥遥领先,其他互联网公司纷纷效仿。还有那5%公积金真恶心。之前认识一个腾讯提前批哥们,他杭电本科生,hr打电话还恶心他,给他开13a,总包比腾讯少20w,跟他说一大堆什么企业稳定,前景好,技术遥遥领先(图2)另外,还有个签约阿里被华为恶心的(图3)我和腾讯提前批的哥们的故事是真的,可以保证确有其事,图3是道听途说,不保证真实性,但我觉得这**公司真有可能发生这种诈骗故事
好吃的麦乐鸡块:这公司真的恶心,毫无信誉可言
点赞 评论 收藏
分享
评论
5
99
分享

创作者周榜

更多
牛客网
牛客企业服务