Sql刷题日志(day3)

一、笔试

1、min(date_time):求最早日期

2、mysql中distinct不能与order by 连用,可以用group by去重

二、面试

1、SQL中如何利用replace函数统计给定重复字段在字符串中的出现次数

(length(all_string)-length(all_string,目标字符串,''))/length(target_string)

2、讲一下Union和Join的区别

  • UNION是两张表进行上下拼接,产生的两个记录集(字段要一样的)并在一起,成为一个新的记录集,分为UNION(去重)UNION ALL两种方法;
  • JOIN 是两张表进行左右连接,条件匹配的记录将合并产生一个记录集,有LEFT JOIN、RIGHT JOIN、INNER JOIN、OUTER JOIN等多种方法。

3、说一下SQL窗口函数并举例

(1)聚合函数与窗口函数区别

①聚合函数是将多条记录聚合为⼀条;窗⼝函数是每条记录都会执行,有几条记录执行完还是几条。

②聚合窗口函数:sum、count、avg、max、min

聚合函数也可以⽤于窗⼝函数。(原因就在于窗⼝函数的执⾏顺序(逻辑上的)是在FROM,JOIN,WHERE, GROUP BY,HAVING之后,在ORDER BY,LIMIT,SELECT DISTINCT之前。它执⾏时GROUP BY的聚合过程已经完成了,所以不会再产⽣数据聚合。)

注:窗口函数是在where之后执行的,所以如果where子句需要用窗口函数作为条件,需要多⼀层查询,在子查询外面进行

(2)窗口函数的基本用法

over关键字用来指定函数执⾏的窗⼝范围,若后⾯括号中什么都不写,则意味着窗口包含满足WHERE条件的所有行,窗口函数基于所有行进行计算;如果不为空,则⽀持以下4中语法来设置窗⼝。

window_name:给窗口指定⼀个别名。如果SQL中涉及的窗口较多,采用别名可以看起来更清晰易读

partition by子句:窗口按照哪些字段进⾏分组,窗⼝函数在不同的分组上分别执⾏

order by子句:按照哪些字段进⾏排序,窗⼝函数将按照排序后的记录顺序进⾏编号 

frame子句:frame是当前分区的⼀个子集,子句⽤来定义子集的规则,通常⽤来作为滑动窗⼝使⽤

(3)(面试考点)序号函数:row_number(),rank(),dense_rank()的区别

①ROW_NUMBER():顺序排序——1、2、3

②RANK():并列排序,跳过重复序号——1、1、3

③DENSE_RANK():并列排序,不跳过重复序号——1、1、2 

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

用途:返回位于当前行的前n行( LAG(expr,n) )或后n⾏ ( LEAD(expr,n) )的expr的值

应用场景:查询前1名同学的成绩和当前同学成绩的差值

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

⽤途:返回第⼀个( FIRST_VALUE(expr) )或最后⼀个( LAST_VALUE(expr) )expr的值

应用场景:截⽌到当前成绩,按照⽇期排序查询第1个和最后1个同学的分数

4、说一下SQL里面的like的用法

like:模糊查询,'-'匹配单个字符,'%'匹配多个字符

用处:LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式

5、SQL语句求单日留存及一个月的每日留存

/*1.统计每个用户首次访问的日期;2.按用户首次访问的日期分组,统计每个日期的单日留存用户数和30日留存用户数及当前日期的新增用户数;   3.单日留存率=单日留存用户数/当前日期下的新增用户数,30日留存率=30留存用户数/当前日期下的新增用户数*/
with t as 
(select user_id, min(log_date) as first_date 
from user_log) 
select first_date '日期', count(distinct user_id) '新增用户数', round(count(distinct if(datediff(log_date, first_date )=1, user_id, null))/count(distinct user_id), 2) '单日留存率',  round(count(distinct if(datediff(log_date, first_date)=29,user_id, null))/count(distinct user_id), 2) '30日留存率'  
from
(     select l.user_id, l.log_date, t.first_date from user_log l left join t on l.user_id=t.user_id 
) a 
group by first_date; 

 6、sql如何进行优化

        ①用group by代替distinct 去重

        ②关联之前先用where过滤

        ③建立合适的索引

        ④少使用like

        ⑤用临时表with as

        ⑥如果是并集,多使用union all(不去重)

        ⑦在Oracle中可以使用decode代替case when

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

引申:数据分析师通常会使用EXCEL、SQL、Python和R进行数据处理及数据分析的工作

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

8、说一下count()和count(distinct)用法

  • count(column_name):返回非NULL值的数量;
  • count(*):返回总行数,NULL也计算进去 
  • count(distinct):是去重字段后,统计非NULL的值

9、SQL掌握运用的程度?学过sql吗?

①sql 的定义、类别

Structured Query Language(结构化查询语句)。主要包括五类语言:查询语言DQL,操作语言DML,定义语言DDL,事务控制TCL,数据控制语言DCL。

  • 数据查询语言 DQL基本结构:是由SELECT子句,FROM子句,WHERE 子句组成的查询块,简称DQL,Data Query Language。**代表关键字为select**。
  • 数据库操作语言 DML:可以实现对数据库的基本操作。代表关键字为insert、delete 、update。
  • 数据定义语言DDL:用来创建数据库中的各种对象,创建、删除、修改表的结构,比如表、视图、索引、同义词、聚簇等,简称DDL,Data Denifition Language。代表关键字为create、drop、alter。(和DML相比,DML是修改数据库表中的**数据**,而 DDL 是修改数据中表的**结构**)。
  • 事务控制语言 TCL:经常被用于快速原型开发、脚本编程、GUI和测试等方面。**代表关键字为commit、rollback。** 
  • 数据控制语言 DCL用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等。**代表关键字为grant、revoke。** 

(2)sql 的基本语法上衍生出的其它知识点: 

  • 嵌套查询:WHERE筛选条件中使用嵌套查询,将(SELECT-FROM-WHERE)的查询语句作为子查询嵌套进去; 
  • 组合查询:使用UNION/UNION ALL对多个查询结果进行组合,其中UNION将对结果进行去重; 
  • 表连接:表连接中根据使用场景选择INEER/LEFT/RIGHT/FULL JOIN; 
  • 聚合函数:使用MAX/MIN/SUM/AVG/COUNT对查询数据进行聚合; 
  • 窗口函数:多查询数据排序或多样性聚合,xxx over(partition by ... order by ...)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/901896.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决 Spring Boot 多数据源环境下事务管理器冲突问题(非Neo4j请求标记了 @Transactional 尝试启动Neo4j的事务管理器)

0. 写在前面 到底遇到了什么问题? 简洁版: 在 Oracle 与 Neo4j 共存的多数据源项目中,一个仅涉及 Oracle 操作的请求,却因为 Neo4j 连接失败而报错。根本原因是 Spring 的默认事务管理器错误地指向了 Neo4j,导致不相…

理解和实现RESTful API的最佳实践

理解和实现RESTful API的最佳实践 在当今数字化时代,APIs已成为软件开发的核心组件,而RESTful API以其简洁、灵活和可扩展性成为最流行的API设计风格。本文将深入探讨RESTful API的概念、特点和实施指南,帮助开发者构建高效、可靠的Web服务。…

大语言模型微调技术与实践:从原理到应用

大语言模型微调技术与实践:从原理到应用 摘要:随着大语言模型(LLM)技术的迅猛发展,预训练语言模型在各种自然语言处理任务中展现出强大的能力。然而,将这些通用的预训练模型直接应用于特定领域或任务时&am…

遨游科普:三防平板除了三防特性?还能实现什么功能?

在工业4.0浪潮席卷全球的今天,电子设备的功能边界正经历着革命性突破。三防平板电脑作为"危、急、特"场景的智能终端代表,其价值早已超越防水、防尘、防摔的基础防护属性。遨游通讯通过系统级技术创新,将三防平板打造为集通信中枢、…

前端实战:基于 Vue 与 QRCode 库实现动态二维码合成与下载功能

在现代 Web 应用开发中,二维码的应用越来越广泛,从电子票务到信息传递,它都扮演着重要角色。本文将分享如何在 Vue 项目中,结合QRCode库实现动态二维码的生成、与背景图合成以及图片下载功能,打造一个完整且实用的二维…

HAL详解

一、直通式HAL 这里使用一个案例来介绍直通式HAL,选择MTK的NFC HIDL 1.0为例,因为比较简单,代码量也比较小,其源码路径:vendor/hardware/interfaces/nfc/1.0/ 1、NFC HAL的定义 1)NFC HAL数据类型 通常定…

Vue自定义指令-防抖节流

Vue2版本 // 防抖 // <el-button v-debounce"[reset,click,300]" ></el-button> // <el-button v-debounce"[reset]" ></el-button> Vue.directive(debounce, { inserted: function (el, binding) { let [fn, event "cl…

AI知识补全(十六):A2A - 谷歌开源的agent通信协议是什么?

名人说&#xff1a;一笑出门去&#xff0c;千里落花风。——辛弃疾《水调歌头我饮不须劝》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 上一篇&#xff1a;AI知识补全&#xff08;十五&#xff09;&#xff1a;AI可解…

【机器人创新创业应需明确产品定位与方向指南】

机器人领域的创新创业, 需要对公司和产品的定位和生态进行深入思考, 明确其定位与发展目标, 明确产品在是为G、为B还是为C进行服务。 本文引用地址&#xff1a;https://www.eepw.com.cn/article/202504/469401.htm 超前的、探索性的创新技术一般是面向G端, 而不是面向B端或者C…

网安加·百家讲坛 | 刘志诚:AI安全风险与未来展望

作者简介&#xff1a;刘志诚&#xff0c;乐信集团信息安全中心总监、OWASP广东区域负责人、网安加社区特聘专家。专注于企业数字化过程中网络空间安全风险治理&#xff0c;对大数据、人工智能、区块链等新技术在金融风险治理领域的应用&#xff0c;以及新技术带来的技术风险治理…

TOA与AOA联合定位的高精度算法,三维、4个基站的情况,MATLAB例程,附完整代码

本代码实现了三维空间内目标的高精度定位,结合到达角(AOA) 和到达时间(TOA) 两种测量方法,通过4个基站的协同观测,利用最小二乘法解算目标位置。代码支持噪声模拟、误差分析及三维可视化,适用于无人机导航、室内定位等场景。订阅专栏后可获得完整代码 文章目录 运行结果…

2025MathorcupC题 音频文件的高质量读写与去噪优化 保姆级教程讲解|模型讲解

2025Mathorcup数学建模挑战赛&#xff08;妈妈杯&#xff09;C题保姆级分析完整思路代码数据教学 C题&#xff1a;音频文件的高质量读写与去噪优化 随着数字媒体技术的迅速发展&#xff0c;音频处理成为信息时代的关键技术之一。在日常生活中&#xff0c;从录音设备捕捉的原始…

Deno Dep:颠覆传统的模块化未来

一、重新定义依赖管理&#xff1a;Deno Dep 的革新哲学 Deno Dep&#xff08;原Deno包管理器&#xff09;彻底重构了JavaScript/TypeScript的依赖管理方式&#xff0c;其核心突破体现在&#xff1a; 1. 浏览器优先的模块化&#xff08;URL-Centric Modules&#xff09; // 直…

欧拉系统升级openssh 9.7p1

开发的系统准备上线&#xff0c;甲方对欧拉服务器进行了扫描&#xff0c;发现openssh版本为8.2p1&#xff0c;存在漏洞&#xff0c;因此需要升级openssh至9.7p1。欧拉系统版本为20.03 SP3。 1、下载openssh 9.7p1 https://www.openssh.com/releasenotes.html&#xff0c; 将下…

如何精通C++编程?

如果从学生时代算起的话&#xff0c;我学习和使用C已经差不多快十年了&#xff0c;仍然不敢说自己已经掌握了C的全部特性&#xff0c;但或许能够给出一些有用的建议吧。 我学习C全靠自学&#xff0c;花费了不少的功夫&#xff0c;在这里分享一些学习心得&#xff0c;希望对大家…

提高Qt工作线程的运行速度

1. 使用线程池&#xff08;QThreadPool&#xff09;替代单一线程 做过&#xff0c;但是当时没想到。。。 目的&#xff1a;减少线程创建和销毁的开销&#xff0c;复用线程资源。 实现步骤&#xff1a; 创建自定义任务类&#xff1a;继承QRunnable&#xff0c;实现run()方法。…

Solon AI MCP Server 入门:Helloworld (支持 java8 到 java24。国产解决方案)

目前网上能看到的 MCP Server 基本上都是基于 Python 或者 nodejs &#xff0c;虽然也有 Java 版本的 MCP SDK&#xff0c;但是鲜有基于 Java 开发的。 作为Java 开发中的国产顶级框架 Solon 已经基于 MCP SDK 在进行 Solon AI MCP 框架开发了&#xff0c;本文将使用 Solon AI …

STL之迭代器(iterator)

迭代器的基本概念 迭代器(iterator)模式又称为游标(Cursor)模式&#xff0c;用于提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。或者这样说可能更容易理解&#xff1a;Iterator模式是运用于聚合对象的一种模式&#xff0c;通过运用该模式&#…

Android系统通知机制深度解析:Framework至SystemUI全链路剖析

1. 前言 在Android 13的ROM定制化开发中&#xff0c;系统通知机制作为用户交互的核心组件&#xff0c;其实现涉及Framework层到SystemUI的复杂协作。本文将深入剖析从Notification发送到呈现的全链路流程&#xff0c;重点解析关键类的作用机制及系统服务间的交互逻辑&#xff…

UE5角色状态机中跳跃落地移动衔接问题

UE5系列文章目录 文章目录 UE5系列文章目录前言一、状态机设置二、主要蓝图 前言 先说说遇到的问题&#xff0c;在我按空格键跳跃落地以后&#xff0c;角色落地再按WSAD键移动就出现了画面中角色抽搐的情况 一、状态机设置 在Unreal Engine 5中创建角色时&#xff0c;处理跳…