Sql刷题日志(day4)

一、笔试

1、cast:将一个数据类型的表达式转换为另一个数据类型

cast(expression as data_type)
--SELECT CAST('123' AS INT);

参数说明:

  • expression:要转换的表达式或值
  • data_type:目标数据类型,可以是整数、浮点数、字符串、日期等

2、dateadd:将指定的时间间隔添加到一个日期值上

dateadd(datepart,number,date)

参数说明:

  • datepart:指定要添加时间间隔的日期部分,如 yearmonthdayhourminute
  • number:指定要添加(或减去,如果是负数)的时间间隔数量
  • date:指定要进行操作的日期时间表达式

二、面试

1、你说在销售运营这个岗位上会涉及到一些报表的出具,包括日报/月报等等这些工作,用到的工具除了EXCEL,像SQL这些用得到吗?

会用到,比如提取销售情况的时候,需要先用sql将数据从数据库中取出,在一些较复杂的场景中,会将提出的数据导入python中进行数据处理,然后再用excel产出

2、选取订单量前1000的商品,并且选出每个商品订单量排名前100的销售渠道

--订单表a(sid:商品id;channel:销售渠道;amount:订单量)  
select 
    sid, channel 
from             
    (select 
        sid, sum(amount) as amt              
     from 
        a             
     group by sid) t1
join              
    (select 
         sid, channel, 
         row_number() over (partition by sid order by amount desc) as rk
     from 
         a) t2 
on 
    t1.sid = t2.sid  
where 
    rk <= 100 
order by 
    amt desc 
limit 1000

3、根据表找出每个用户得分最高的视频,得分相同时按照视频id选择最大的

表a:uid:用户id;d:视频id;score:得分

select
    uid,
    id,
    score
from
    (
        select
            uid,id,
            row_number() over(partition by uid order by score desc) as rk
        from
            a
    ) t
where
    rk=1

4、找出开播三分钟内无人进入的直播房间号

主播表a:upid:主播id;rid:直播间id;stime:开播时间

观众表b:uid:观众id;rid:进入的直播间id;intime:进入时间

--要找出最早进入直播间的观众进入时间与开播时间作对比
select 
    a.upid,a.rid 
from 
    a  
left join 
    (select b.rid,min(intime) as min_intime from b) c 
on 
    a.rid = c.rid  
where 
    a.stime < dateadd(minute,-3,c.min_intime) or c.min_intime is null     

5、SQL窗口函数、如何去重

在SQL中通常有三种方法能够实现去重的功能:

  • DISTINCT 关键字 :使用DISTINCT去重的方法很简单,在查询数据时在字段前增加DISTINCT关键字既可对字段内容进行去重。如下代码将输出table表中字段a和b的组合不重复的数据: SELECT DISTINCT a,b FROM table;
  • GROUP BY关键字:使用GROUP BY进行去重的方法和DISTINCT类似,仅需在查询语句末端增加GROUP BY即可,而且能够对分组数据进行筛选。 SELECT a, b FROM table GROUP BY a, b; 
  • 窗口函数:使用窗口函数进行去重时,比DISTINCT和GROUP BY稍微复杂些,可以采用窗口函数+over(partition by 去重字段)的方式。(去重方式如下: -- 窗口函数+over(partition by 去重字段),其中窗口函数可采用row_number )

6、说一说数据分析流程

数据分析通常包含以下七个步骤:

  • 1.明确分析目的:明确需求,确定业务问题,并根据业务需求进行深度访谈
  • 2.确定思路与制定计划:确定数据分析方法和框架,并制定详细计划
  • 3.数据收集:通过调查问卷、API接口等渠道进行数据采集
  • 4.数据处理:包括数据清洗、数据转换和数据提取计算
  • 5.数据分析:对数据进行描述性分析、因果分析、预测分析
  • 6.数据呈现:将数据可视化并制作数据报表
  • 7.撰写报告:撰写数据报告,并提出合理的解决方案。需要注意的是,根据不同的分析任务,可能会增加一些特定步骤。

7、之前的经历中单品数据分析的经验丰富,但缺少平台分析经验,你认为字节小游戏平台分析需要涉及哪些指标?哪个是最重要的?为什么?

  • 游戏自身出发:核心玩法的参与度,游戏留存等; 
  • 游戏玩家出发:ARPU(Average Revenue Per User),DAU(Daily Active Users日活跃用户数),留存率; 
  • 游戏性能出发:闪退率,卡顿率等。 
  • 最重要的是游戏的渗透率,因为字节游戏主要依靠从字节跳动或今日头条引流用户,如何把内容用户转变为游戏用户,是字节游戏现在最重要的事情

8、你对数据分析的认知是什么,那你是如何学习数据分析的?(除上课外)

  • 狭义的数据分析是利用合适的分析工具和方法,对收集来的数据进行分析整理总结出所研究对象的内在规律得出有效结论的过程;
  • 广义的数据分析应该是基于对业务的理解发现业务中的问题和潜在增长点,形成分析思路,利用数据分析方法进行分析,得出结论和解决方案,协调各方并推动方案落地,解决问题,最终回到业务中去的完整闭环 
  • 我是通过b站的课程学习Excel高阶函数的用法和bi工具的使用,并且在牛客刷一些SQL的题,找实习在实践中学习

9、你觉得数据分析应该具备的能力是什么

数据分析者应具备的能力包括:问题拆解能力、业务理解能力、数据挖掘能力等

  • 数据分析师需要接触不同的业务,在学习新的业务中,我们需要快速学习能力,来提高我们工作的效率;
  • 数据化思维能够帮助数据分析师提高数据敏感度,对异常数据有敏感的识别能力;
  • 业务逻辑化能力能够让我们与业务方沟通时更加顺畅,数据分析并非独立完成的,是需要与其他人协同产出的。

10、以往经历中,你是怎么做数据分析报表

  • 学校的学习中,主要使用Python和Excel产出可视化报表,所以我对这两项工具的使用也非常熟练。
  • 公司的实习中,主要使用Tableau和公司的报表平台,我也能够熟练的使用这两项工具,对于不同的平台也有较快的上手能力。 需要在回答中表现出自己的匹配能力,能够熟练使用数据分析工具,且对于陌生的工具有较快的上手能力。

11、数据分析必备哪些技能

  • 数据处理技能:SQL、Excel、Python;
  • 数据可视化技能:Python、Tableau、PPT;
  • 沟通协调技能:与其他团队沟通,以及将数据分析结果呈现的能力。

12、你觉得数据分析师必备的素质;结合数据分析师的素质,给自己打个分,讲述扣分的理由

  • 快速学习能力、数据敏感度和业务思维
  • 满分十分给自己七分。扣分主要在于自己接触业务,像实习经历这种会比较匮乏,缺乏一定的业务思维,但是我的学习能力较强,能够快速上手业务,对数据分析的工具掌握较熟练,所以勉强及格的水平,还需要进一步学习。

13、有哪些数据分析经历

  • 按照自身简历情况,如果有实习经历,则回答自身实习中所做的,优先级:实验设计评估落地 -> 专题分析报告 -> 简单业务分析。
  • 如果没有实习经历,则说自己的项目经历

14、对做数据分析做了哪些准备

分理论学习、工具学习、业务学习三个层面进行回答。

  • 理论学习:对数据分析所用的统计学理论、机器学习理论有较为全面的理解掌握。
  • 工具学习:熟练掌握Sql、Python、Excel、Tableau等数据分析工具。 
  • 业务学习:在人人都是产品经理、知乎、公众号阅读了大量数据分析的文章,并进行方法论总结

你可能感兴趣的:(sql,数据库)