SQL面试题——奔驰面试题
SQL面试题——奔驰SQL面试题
我们的表大致如下
CREATE TABLE signal_log(
vin STRING COMMENT'vehicle frame id',
signal_name STRING COMMENT'function name',
signal_value STRING COMMENT 'signal value' ,
ts BIGINT COMMENT'event timestamp',
dt STRING COMMENT'format yyyy-mm-dd'
)
下面给出了一些样例数据

说明
- 信号power_mode(驾驶模式: SPORT/NORMAL/ECO/COMFORT)2)
- 信号odometer_value (里程表示数: km)
- power mode上报的同一个ts,会有odometer value记录上报
- 信号记录有重复上报的情况
- ts 单位为秒
问题
- 对于每个车辆,统计每天行驶的距离及总共使用过的驾驶模式 (power_mode)个数
- 统计每个车辆,在不同驾驶模式下的总行驶的时间 (单位:秒)
- 计算每个车辆的驾驶偏好 (驾驶时间越长则表示越偏好;展示第一、第二偏好)
分析
- 这里给出的都是样例数据,ts 和我们平常看到的都不一样
- signal_value 存储的是不同信号上报上来的值,具体是数值还是字符串取决于signal_name,也就是说所有的信号值都放在一起了,我们处理的时候可能需要针对不同信号值单独处理
问题一 对于每个车辆,统计每天行驶的距离及总共使用过的驾驶模式
这个问题就很简单了
- 驾驶模式的信号是power_mode,我们过滤一下,直接统计即可
selectvin,dt,count(distinct signal_value) power_mode_cnt
fromsignal_log
wheresignal_name='power_mode'
group byvin,dt
- 每天行驶的距离我们只需要用当天最大的里程数减去最小的里程数即可
selectvin,dt,max(signal_value)-min(signal_value)
fromsignal_log
wheresignal_name='odometer_value '
group byvin,dt
这两个放在一起的话,我们可以这样写
selectvin,dt,count(distinct if(signal_name='power_mode',signal_value,"")) -1 as power_mode_cnt,max(if(signal_name='odo_value',signal_value,NULL))-min(if(signal_name='odo_value',signal_value,NULL))
fromlog
group byvin,dt
问题二 统计每个车辆,在不同驾驶模式下的总行驶的时间 (单位:秒)
我们上报上来的数据包含当前的驾驶模式和当前时间戳,我们可以把下次上报上来的时间减去当前时间的差作为这个驾驶模式的形式时间,很多人可能会说要不要判断下次上来的驾驶模式是不是和当前的相当呀
我们举个例子
SPORT TS1
SPORT TS2
SPORT TS3
NORMAL TS4
NORMAL TS5
SPORT TS6
如果相等作为条件,SPORT 的驾驶时长就是TS3-TS1,如果没有这个条件SPORT 的驾驶时长就是TS4-TS1
这里我们可以当作没有这个条件进行处理,因为传感器信号其实是很密集的,所以误差很小
那这个问题就很简单了,我们获取下一次上报的时间和当前时间做差,当成当前驾驶模式的形式时间
selectvin,power_mode,sum(time_diff) as total_seconds
from(selectvin,dt,ts as current_time,signal_value as power_modelead(ts,1,unix_timestamp()) over(partition by vin order by ts) next_time-ts as time_difffromsignal_logwheresignal_name='power_mode'
)tmp
group by vin,power_mode
问题三 计算每个车辆的驾驶偏好 (驾驶时间越长则表示越偏好;展示第一、第二偏好)
前面我们已经有了每种驾驶模式的驾驶时间,我们只需要按照驾驶时间排序即可
with tmp as
selectvin,power_mode,sum(time_diff) as total_seconds
from(selectvin,dt,ts as current_time,signal_value as power_modelead(ts,1,unix_timestamp()) over(partition by vin order by ts) next_time-ts as time_difffromlogwheresignal_name='power_mode'
)tmp
group by vin,power_mode
唯一需要注意的是,由于是按照每辆车每天的标准去计算,所以相当于分组内排序
select*
from(
selectvin,power_mode,total_secondsrow_number()over(partition by vin order by total_seconds desc) as rn
fromtmp
)t
wherern<=2
相关文章:
SQL面试题——奔驰面试题
SQL面试题——奔驰SQL面试题 我们的表大致如下 CREATE TABLE signal_log( vin STRING COMMENTvehicle frame id, signal_name STRING COMMENTfunction name, signal_value STRING COMMENT signal value , ts BIGINT COMMENTevent timestamp, dt STRING COMMENTformat yyyy-mm…...
24.11.10 css
2.css语法结构 选择器{ 样式:样式值; 样式:样式值; } 3.css引入方式 如何在html页面中写css代码 1.页面中直接使用style标签 编写css 调试样式代码时使用<style> h1{color:red}</style>2.通过link标签 引入css文件 …...
git新手使用教程
git新手使用教程 一、安装和初始化配置2、新建仓库3.工作区域和文件状态4.添加和提交文件5 git reset回退版本6 使用git diff查看差异7 使用git rm删除文件8 .gitignore忽略文件9 注册GitHub账号10 SSH配置和克隆仓库11 关联本地仓库和远程仓库12 Gitee的使用 由B站视频教程整理…...
运维发展方向
作为一名运维工程师,我建议可以从以下几个方面规划职业发展: 1. 夯实基础知识 - Linux 系统管理与优化 - 网络协议和架构 - 数据库运维(MySQL、PostgreSQL等) - Shell 脚本编程 - Python/Go 等自动化语言 2. 掌握现代化工具 - 容器技术(Docker、Kubern…...
jmeter常用配置元件介绍总结之函数助手
系列文章目录 1.windows、linux安装jmeter及设置中文显示 2.jmeter常用配置元件介绍总结之安装插件 3.jmeter常用配置元件介绍总结之取样器 jmeter常用配置元件介绍总结之函数助手 1.进入函数助手对话框2.常用函数的使用介绍2.1.RandomFromMultipleVars函数2.2.Random函数2.3.R…...
Pytorch从0复现worc2vec skipgram模型及fasttext训练维基百科语料词向量演示
目录 Skipgram架构 代码开源声明 Pytorch复现Skip-gram 导包及随机种子设置 维基百科数据读取 建立词频元组列表并根据词频排序 建立词频字典,word_id字典,id_word字典 二次采样 正采样与负采样 Skipgram模型类 模型训练 词向量输出 近义词寻找 fasttext训练Skip-…...
fastapi 查询参数支持 Pydantic Model:参数校验与配置技巧
fastapi 查询参数支持 Pydantic Model:参数校验与配置技巧 本文介绍了 FastAPI 中通过 Pydantic model 声明查询参数的使用方法,提供了更加灵活和强大的参数校验方式。通过将查询参数定义在 Pydantic model 中,开发者可以对参数设置默认值、…...
mysql 大数据查询
基于 mysql 8.0 基础介绍 com.mysql.cj.protocol.ResultsetRows该接口表示的是应用层如何访问 db 返回回来的结果集 它有三个实现类 ResultsetRowsStatic 默认实现。连接 db 的 url 没有增加额外的参数、单纯就是 ip port schema 。 @Test public void generalQuery() t…...
如何在 Spring Boot 中利用 RocketMQ 实现批量消息消费
文章目录 准备工作项目依赖配置 RocketMQ生产批量消息消费批量消息测试批量消息发送和消费总结推荐阅读文章 RocketMQ 是一款分布式消息队列,支持高吞吐、低延迟的消息传递。对于需要一次处理多条消息的场景,RocketMQ 提供了批量消费的机制,这…...
推荐一个Star超过2K的.Net轻量级的CMS开源项目
推荐一个具有模块化和可扩展的架构的CMS开源项目。 01 项目简介 Piranha CMS是一个轻量级且跨平台的CMS库,专为.NET 8设计。 该项目提供多种模板,具备CMS基本功能,也有空模板方便从头开始构建新网站,甚至可以作为移动应用的后端…...
基于驾驶员面部特征的疲劳检测系统
大家好,本文是对基于驾驶员面部特征的疲劳检测系统源码的介绍与说明。 项目下载:基于驾驶员面部特征的疲劳检测系统 1.关于项目 疲劳驾驶检测系统通过监测驾驶人的眼睛状态,头部状态,嘴部状态等指标,识别出疲劳迹象…...
前端知识点---字符串的8种拼接方法(Javascript)
文章目录 01使用 运算符(改变了原始字符串)02使用 运算符(改变了原本的字符串)03 使用 concat() 方法(不改变原本的字符串)04使用模板字面量(不改变原本的字符串)05使用 join() 方法(不改变原本的字符串)①指定分隔符 ②没有指定…...
用 Python 从零开始创建神经网络(一):编码我们的第一个神经元
编码我们的第一个神经元 引言1. A Single Neuron:Example 1Example 2 2. A Layer of Neurons:Example 1 引言 本教程专为那些对神经网络已有基础了解、但尚未动手实践过的读者而设计。尽管网上充斥着各种教程,但很多内容要么过于简略&#x…...
低代码开发
低代码(Low Code)是一种软件开发方法,它通过可视化界面和少量的编码来快速构建应用程序。低代码平台的核心理念是通过抽象和最小化手工编码的方式,加速软件开发和部署的过程。 定义 低代码是一种软件开发方法,它允许…...
sql server 文件和文件组介绍
sql server 文件和文件组介绍 数据库文件和文件组 - SQL Server | Microsoft Learn...
caozha-CEPCS(新冠肺炎疫情防控系统)
caozha-CEPCS,是一个基于PHP开发的新冠肺炎疫情防控系统,CEPCS(全称:COVID-19 Epidemic Prevention and Control System),可以应用于单位、企业、学校、工业园区、村落等等。小小系统,希望能为大…...
1Panel修改PostgreSQL时区
需求 1Panel安装的PostgreSQL默认是UTC时区,需要将它修改为上海时间 步骤 进入PostgreSQL的安装目录 /opt/1panel/apps/postgresql/postgresql/data打开postgresql.conf文件 修改: log_timezone Asia/Shanghai timezone Asia/Shanghai保存后重启…...
开发一个CRM系统难吗?CRM系统的实现步骤
越来越多企业意识到了,客户关系管理(CRM)系统已成为企业提升客户体验、推动销售增长的必备工具。一个高效的CRM系统不仅能够帮助企业优化客户数据管理,还能提升客户满意度,增强客户忠诚度,从而推动业务的持…...
kafka常见面试题总结
Kafka 核心知识解析 一、Kafka 消息发送流程 Kafka 发送消息涉及两个线程:main 线程和 sender 线程。在 main 线程中,会创建一个双端队列 RecordAccumulator,main 线程负责将消息发送给 RecordAccumulator,而 sender 线程则从 R…...
前端知识点---Javascript中检测数据类型函数总结
文章目录 01 typeof 运算符02 instanceof 运算符03 Array.isArray()04 Object.prototype.toString.call()05 constructor 属性06 isNaN() 和 Number.isNaN() (常用)07 isFinite() 和 Number.isFinite()08 typeof null 是 "object" 的问题 01 typeof 运算符 返回值是…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
