数分面试题-SQL常见面试题型1

目录标题

      • 1、连续时间问题
        • 1.1 最近一周内的活跃天数
        • 1.2 每个用户一周内最大连续活跃天数
        • 1.3 计算截至当前,每个用户已经连续签到的天数
      • 2、时间间隔问题举例
      • 3、sql窗口分析函数
        • 3.1 有一个日志登陆列表,获取用户在某个页面停留时长
        • 3.2 寻找至少连续出现3次的数字
      • 4、什么是关系型“数据表”“数据库”
      • 5、行/列转换
        • 5.1 行转列,表1转表2--PIVOT
        • 5.2 列转行,表2转表1
        • 5.3 一行转多行

1、连续时间问题

在这里插入图片描述

1.1 最近一周内的活跃天数

最近一周:timestampdiff(day,time,now())<=7
group by 可以起到去重的作用

select user_id,count(1)
from
	(select user_id,date from t where timestampdiff(day,time,now())<=7
	group by user_id,date)
group by user_id

1.2 每个用户一周内最大连续活跃天数

思路:排序-减去-- 计数
date_sub(日期,天数)

select user_id,max(count(diff))
from
(select date ,user_id,date_sub(date,rank) as diff
from
	(select date ,user_id ,row_number()over(partition by user_id order by date) as rk
	from
		 (select date ,user_id from t group by date ,user_id)
	)
)	
group by user_id

时间差函数:
1,timestampdiff(second/minute/hour/day,开始日期,结束日期)
2,date_sub(日期,天数) 日期减去天数

在这里插入图片描述

1.3 计算截至当前,每个用户已经连续签到的天数

每一个日期都有
思路:选出最新没签到的日子,用当前时间减去该日子得到已经连续签到的次数

select user_id,timestampdiff(Day,el,now()) as contdays
from
	(select user_id,max(date) el from user_attendence where is_sign_in =0 group by user_id)

2、时间间隔问题举例

1、为日期排序
· -row number() partition by 用户编号 order by 操作时间 as 日期排序
2、错位相减,求日期和排序的差值(diff)
· 用错位相减求来实现“相邻”要求
from a left join b on (a.日期排序 = b.日期排序-1)

3、sql窗口分析函数

lag:用于统计窗口内往上第n行值
lead:用于统计窗口内往下第n行值
lag 和 lead 有三个参数,第一个参数是列名,第二个参数是偏移的 offset,第三个参数是超出记录窗口时的默认值。

lag(列名,1,0) over (partition by 分组列 order by 排序列 rows between
开始位置 preceding and 结束位置 following)

3.1 有一个日志登陆列表,获取用户在某个页面停留时长

在这里插入图片描述
代码:

select userid,time,
unix_timestamp(lead(time,1) over(partition by userid order by time),'yyyy-MM-dd HH:mm:ss')- unix_timestamp(time,'yyyy-MM-dd HH:mm:ss') as period
,url
from user_log

3.2 寻找至少连续出现3次的数字

在这里插入图片描述
思路:增加两列,使用 lag 函数-把下面的数据往上错位一个,错位 2 个,判断 num 和错位的两列是否相等

select id,distinct num
from
(select id,num,
lag(num,1)over(partition by id) as lag1,
lag(num,2)over(partition by id) as lag2
from log_table
) a
where num = lag1 and lag1 = lag2

4、什么是关系型“数据表”“数据库”

数据分成结构化数据、非结构化数据,数据库又常分成关系型数据库和非关系型数据库

结构化数据:可以用excel存储的,一行行一列列数据
非结构化数据:图片、文字、语音这种没办法用 excel 存储的,一行行一列列的数据

关系型数据库:需要预先设计好存储的strcture
非关系型数据库:可以预先设计好structure进行结构化存储,也可以在数据不满足structure的情况下先行存储数据,待后来再进行格式化打标签

结构化查询语言SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统

5、行/列转换

4款产品,三个电商平台,分别以两种形式记录了某个月各产品在各个平台的销售数量
表1:
在这里插入图片描述
表2:
在这里插入图片描述

5.1 行转列,表1转表2–PIVOT

在 SQL SERVER 中,提供了专门进行行列转换的函数:PIVOT
pivot的语法:

from table_source
pivot(
聚合函数(value_column) - value_column 要转换为列值的列名
for pivot_column  - pibot_column指定要转换的列
in(column_list) ----column_list自定义的目标列名
)
SELECT Product,
 MAX(CASE WHEN Platform = ‘ 天猫 ’ THEN quantity ELSE 0 
END) AS “ 天猫 ”,
 MAX(CASE WHEN Platform = ‘ 淘宝 ’ THEN quantity ELSE 0 
END) AS “ 淘宝 ”,
 MAX(CASE WHEN Platform = ‘ 京东 ’ THEN quantity ELSE 0 
END) AS “ 京东 ”
FROM TABLE
GROUP BY
 Produc

5.2 列转行,表2转表1

方法一:UNPIVOT
UNPIVOT 的一般语法是:
在这里插入图片描述

FROM table_source – 表名称,即数据源
UNPIVOT(
value_column – value_column 要转换为 行值 的列名
FOR pivot_column – pivot_column 指定要转换为指定的列
IN(column_list ) – column_list 目标列名
)
SELECT *
FROM TABLE UNPIVOT (quantity FOR Platform IN (“ 天猫 ”, “ 淘
宝 ”, “ 京东 ”))

方法二:聚合函数+UNION
同理,Oracle,MySQL 也是不支持 UNPIVOT 函数的,对于这种情况我们可以通过聚合函数+UNION 的方式将数据组合起来。

5.3 一行转多行

在这里插入图片描述
一行转多行:

SELECT DISTINCT Product,Supplier
FROM table
LATERAL VIEW explode (split(Supplier,,)) as t – t 为新表别名

多行转一行:
可以使用:collect_set +concat_ws 来实现

SELECT Product,
 concat_ws(,, COLLECT_SET(Supplier)) Product_Supplier
FROM TABLE
GROUP BY  Product

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

苍穹外卖-day08 java实现 微信支付

苍穹外卖-day08 课程内容 导入地址簿功能代码用户下单订单支付 功能实现&#xff1a;用户下单、订单支付 用户下单效果图&#xff1a; 订单支付效果图&#xff1a; 1. 导入地址簿功能代码 1.1 需求分析和设计 1.1.1 产品原型 地址簿&#xff0c;指的是消费者用户的地址信息&…

GPT-3.5:ChatGPT的奇妙之处和革命性进步

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

从小白到大神之路之学习运维第67天-------Tomcat应用服务 WEB服务

第三阶段基础 时 间&#xff1a;2023年7月25日 参加人&#xff1a;全班人员 内 容&#xff1a; Tomcat应用服务 WEB服务 目录 一、中间件产品介绍 二、Tomcat软件简介 三、Tomcat应用场景 四、安装配置Tomcat 五、配置目录及文件说明 &#xff08;一&#xff09;to…

【Java】Java多线程编程基础

文章目录 1. 进程与线程1.1 进程与线程的基本认识1.1.1 进程&#xff08;Process&#xff09;1.1.2 线程&#xff08;Thread&#xff09; 1.2 为什么会有线程1.2.1 以看视频为例 2. 多线程实现2.1 Thread类实现多线程2.2 Runnable接口实现多线程2.3 Callable接口实现多线程2.3 …

Oracle输出文本平面(CSV、XML)文本数据详细过程

此过程是提供给前端,调用的接口,为报表提供”下载“功能。以下是本人在测试环境的测试,有什么不足的地方,请留言指教,谢谢。 1、测试表 分别对测试表输出csv、xml两种格式文件数据。前期的准备工作。 --在服务器端创建directory,用管理员用户 create or replace directo…

win10计算器无法打开

问题背景: 打开计算器报错&#xff0c;显示无法打开应用&#xff0c;请打开应用商店获取更多信息。 解决过程 网上试了很多方法&#xff0c;看的最多的是 1、点开计算器重置应用 2、输入命令重新安装 。。。。。。。 说实话都没解决 最后看到这三个图标后&#xff0c;突然…

DAY2,Qt(继续完善登录框,信号与槽的使用 )

1.继续完善登录框&#xff0c;当登录成功时&#xff0c;关闭登录界面&#xff0c;跳转到新的界面中&#xff0c;来回切换页面&#xff1b; ---mychat.h chatroom.h---两个页面头文件 #ifndef MYCHAT_H #define MYCHAT_H#include <QWidget> #include <QDebug> /…

【如何训练一个中英翻译模型】LSTM机器翻译seq2seq字符编码(一)

系列文章 【如何训练一个中英翻译模型】LSTM机器翻译seq2seq字符编码&#xff08;一&#xff09; 【如何训练一个中英翻译模型】LSTM机器翻译模型训练与保存&#xff08;二&#xff09; 【如何训练一个中英翻译模型】LSTM机器翻译模型部署&#xff08;三&#xff09; 【如何训…

ARM异常处理

一、异常二、异常处理机制三、ARM异常源四、ARM异常模式五、ARM异常响应CPSR寄存器ARM寄存器 六、异常向量表七、异常返回八、IRQ异常举例九、异常优先级十、FIQ和IRQ 一、异常 概念 处理器在正常执行程序的过程中可能会遇到一些不正常的事件发生 这时处理器就要将当前的程序暂…

【简单认识MySQL的MHA高可用配置】

文章目录 一、简介1、概述2、MHA 的组成3&#xff0e;MHA 的特点4、MHA工作原理 二、搭建MHA高可用数据库群集1.主从复制2.MHA配置 三、故障模拟四、故障修复步骤&#xff1a; 一、简介 1、概述 MHA&#xff08;Master High Availability&#xff09;是一套优秀的MySQL高可用…

【Kafka】常用操作

1、基本概念 1. 消息&#xff1a; Kafka是一个分布式流处理平台&#xff0c;它通过消息进行数据的传输和存储。消息是Kafka中的基本单元&#xff0c;可以包含任意类型的数据。 2. 生产者&#xff08;Producer&#xff09;&#xff1a; 生产者负责向Kafka主题发送消息。它将消息…

web自动化测试进阶篇05 ——— 界面交互场景测试

&#x1f60f;作者简介&#xff1a;博主是一位测试管理者&#xff0c;同时也是一名对外企业兼职讲师。 &#x1f4e1;主页地址&#xff1a;【Austin_zhai】 &#x1f646;目的与景愿&#xff1a;旨在于能帮助更多的测试行业人员提升软硬技能&#xff0c;分享行业相关最新信息。…

stm32 IIC通信

文章目录 IIC 通信一、硬件电路二、IIC时序基本单元三、IIC时序1.指定地址写2.当前地址读3.指定地址读 IIC 通信 IIC总线是一种通用数据总线&#xff0c;有两根通信线&#xff08;SCL(串行时钟总线),SDA&#xff08;串行数据总线&#xff09;&#xff09;。 特点&#xff1a;同…

【SpringCloud Alibaba】(二)微服务环境搭建

1. 项目流程搭建 整个项目主要分为 用户微服务、商品微服务和订单微服务&#xff0c;整个过程模拟的是用户下单扣减库存的操作。这里&#xff0c;为了简化整个流程&#xff0c;将商品的库存信息保存到了商品数据表&#xff0c;同时&#xff0c;使用商品微服务来扣减库存。小伙…

Rust vs Go:常用语法对比(十一)

题目来自 Rust Vs Go: Which Language Is Better For Developing High-Performance Applications?[1] 202. Sum of squares Calculate the sum of squares s of data, an array of floating point values. 计算平方和 package mainimport ( "math")func main() { da…

android数据的储存、文件的储存、SharedPreferences储存、SQLite的基本用法

一、文件的储存 1、将数据储存到文件中 Context类中提供了openfileOutput()方法&#xff0c;用来获取一个文件流&#xff0c;这个方法接收两个参数&#xff0c;第一个参数是文件名&#xff0c;在文件创建的时候使用的就是这个名称&#xff0c;注意这里指定的文件名不可以包含…

React AntDesign写一个导出数据的提示语 上面有跳转的路径,或者点击知道了,关闭该弹层

效果如下&#xff1a; 代码如下&#xff1a; ForwardDataCenterModal(_blank);export const ForwardDataCenterModal (target?: string) > {let contentBefore React.createElement(span, null, 数据正在处理中&#xff0c;请稍后前往);let contentAfter React.creat…

JAVA基础-集合(List与Map)

目录 引言 一&#xff0c;Collection集合 1.1,List接口 1.1.1&#xff0c;ArrayList 1.1.1.1&#xff0c;ArrayList的add&#xff08;&#xff09;添加方法 1.1.1.2&#xff0c;ArrayList的remove&#xff08;&#xff09;删除方法 1.1.1.3&#xff0c;ArrayList的contai…

网络超时导致namenode被kill的定位

交换机升级导致部分网络通信超时, 集群的namenode主从切换后,主namenode进程被杀死。 网络问题导致namenode与zk间的连接超时触发了hadoop集群的防脑裂机制而主动kill掉了超时的namenode进程。 日志分析发现zk和namenode之间的网络连接超时: 超时触发了namenode切换,并将超时…

游戏引擎UE如何革新影视行业?创意云全面支持UE云渲染

虚幻引擎UE&#xff08;Unreal Engine&#xff09;作为一款“殿堂级”的游戏引擎&#xff0c;占据了全球80%的商用游戏引擎市场&#xff0c;但如果仅仅将其当做游戏开发的工具&#xff0c;显然是低估了它的能力。比如迪士尼出品的电视剧《曼达洛人》、电影《狮子王》等等都使用…