SQL复习(2)

SQL面试题

  • 是否会SQL、Python、R等分析工具,分别有什么用?

    • EXCEL用于小样本量中基本的数据处理操作
    • SQL用于从数据库中取数操作,做一些简单的数据处理工作,通过表连接、嵌套查询等动作完成最终的数据统计工作。SQL基本上可以完成大部分的数据分析工作,对当前公司运营的成效进行数据呈现及分析
    • Python和R则属于更高阶的分析工作,可以借助多种多样的工具库,可以通过数据建模,可用于有监督或无监督模型的训练,解决分类、聚类和其他预测问题。
  • SQL的掌握程度?

    • 熟悉基本操作(增删改查)
      • 增 INSERT INTO <表名> (字段名) VALUES (值)
      • 删 DELETE FROM <表名> WHERE <筛选条件>
      • 改 UPDATE <表名> SET <字段名=值> WHERE <筛选条件>
      • 查 SELECT * FROM <表名> WHERE <筛选条件> GROUP BY <字段名> HAVING <条件>
        • 嵌套查询:将(SELECT-FROM-WHERE)的查询语句作为子查询嵌套进去
        • 组合查询:使用UNION/UNION ALL对多个查询结果进行组合【union去重】
        • 表连接:表连接中根据使用场景选择INEER/LEFT/RIGHT/FULL JOIN
        • 聚合函数:使用MAX/MIN/SUM/AVG/COUNT对查询数据进行聚合
        • 窗口函数:多查询数据排序或多样性聚合【对组内进行操作】
  • SQL如何优化?

    数据库:更针对数据存储、更新

    数据仓库:更针对数据的查询

    • mysql(查询优化)

      • 用groupby代替distinct去重(有时groupby分组后聚合就能达到目的
      • 表连接前先用where过滤
      • 建立合适的索引、少使用Like模糊查询、可以使用(临时表)with as、
    • Hive(基于Mapreduce)

      • 针对业务需求,选择合适的数据粒度

      • 针对数据倾斜

        其原因:

        • group by维度过小,某值的数量过多,导致处理某值的reduce⾮常耗时
        • 去重 distinct的某特殊值过多,导致处理此特殊值的reduce耗时
        • 单点问题,连接 join,count(distinct),group by,join等操作,这些都会触发Shuffle动作,⼀旦触发,所有相同key的值就会拉到⼀个或⼏个节点上,就容易发⽣单点问题

        解决方案:

        • group by时某些key对应数据量很⼤,可以单独对这些key做计算,再与其他key进行join
        • Hive参数设置:
          • 设置hive.map.aggr = true:在map中会做部分聚集操作,效率更高但需要更多的内存设置
          • 设置hive.groupby.skewindata=true 确保数据倾斜时负载均衡
        • 查询语句优化:
          • 在count(distinct) 操作前先进行⼀次group by,把key先进⾏⼀次reduce,去重
          • map join:使⽤map join让小的维度表(1000 条以下的记录条数)先进内存,在map端完成reduce
  • SQL窗口函数?举例?如何去重?

    • 与聚合函数的区别:

      • 聚合函数是将每个分组聚合为一条结果,而窗口函数是对每个分组内的所有记录执行。
      • 聚合函数可以用于窗口函数。
      • 聚合窗口函数:sum、count、avg、max、min;排序窗口函数:rank、rank_dense、row_number;偏移窗口函数:lag、lead
    • 基本用法:over关键字用来指定函数执行的窗口范围

      语法结构:函数 OVER ([PARTITION BY 字段名 ORDER BY 字段名 ASC|DESC])

      • PARTITION BY:对哪些字段进行分组,在不同分组上分别执行。
      • ORDER BY:按照哪些字段进行排序,窗口函数将按照排序后的记录顺序进行编号。
    • 排序窗口函数row_number(),rank(),dense_rank()的区别?

      • ROW_NUMBER():顺序排序——1、2、3
      • RANK():并列排序,跳过重复序号——1、1、3
      • DENSE_RANK():并列排序,不跳过重复序号——1、1、2
    • 分布函数:percent_rank(),cume_dist() percent_rank()

    • 前后函数:lag(expr,n),lead(expr,n)

    • 头尾函数:FIRST_VALUE(expr),LAST_VALUE(expr)

      • 返回第⼀个( FIRST_VALUE(expr) )或最后⼀个( LAST_VALUE(expr) )expr的值
  • like的用法?

    • WHERE 子句中搜索列中的指定模式(正则表达式)。
  • 如何利用replace函数统计给定重复字段在字符串中的出现次数

    • All_String表示完整字符串,Target_String表示待统计的目标字段

      select (length('All_String')- length(replace('All_String', 'Target_String','')))/length('Target_String') as cnt from table
      
  • 销售运营这个岗位上会涉及到一些报表的出具,包括日报/月报等等这些工作,用到的工具除了EXCEL,像SQL这些用得到吗?

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

以上是牛客网里整理的内容,后续将持续更新!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,下面是一些 SQL Server 数据库期末复习的主题和建议: 1. SQL Server 数据库基础知识 了解 SQL Server 数据库的基本概念和结构,包括数据库、表、列、行、索引、视图、存储过程、触发器等。 2. 数据库设计和规范化 了解数据库设计原则和规范化技术,包括函数依赖、范式、主键、外键等。 3. SQL 查询语言 了解 SQL 查询语言的基本语法和常用命令,包括 SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY 等。 4. 数据库管理和维护 了解数据库管理和维护的基本操作和工具,包括备份和还原、数据迁移、性能优化、诊断和故障排除等。 5. 数据库安全和权限管理 了解数据库安全和权限管理的基本原则和方法,包括用户和角色管理、访问控制、加密、审计等。 6. 数据库编程和扩展 了解数据库编程和扩展的基本技术和工具,包括 Transact-SQL、CLR、XML、JSON 等。 7. 数据仓库和商业智能 了解数据仓库和商业智能的基本概念和架构,包括数据集成、清洗、转换、存储、分析和可视化等。 8. 新技术和趋势 了解 SQL Server 数据库的新技术和趋势,包括云计算、大数据、机器学习、人工智能等。 建议: 1. 熟悉 SQL Server 的基本概念和结构,掌握常用的 SQL 查询语言和管理工具。 2. 熟练掌握数据库设计和规范化技术,理解数据库性能优化和故障排除的方法。 3. 熟悉数据库安全和权限管理的原则和方法,了解数据加密和审计的技术。 4. 掌握数据库编程和扩展的技术,包括 Transact-SQL、CLR、XML、JSON 等。 5. 学习数据仓库和商业智能的基本概念和架构,了解数据集成、清洗、转换、存储、分析和可视化的方法。 6. 关注 SQL Server 数据库的新技术和趋势,了解云计算、大数据、机器学习、人工智能等技术的发展和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路过的风666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值