当前位置: 首页 > news >正文

【数据分析面试】10. 计算平均通勤时间(SQL:timestampdiff() 和datediff()区别)

在这里插入图片描述

题目

假设你在Uber工作。rides表包含了关于Uber用户在美国各地的行程信息。

编写一个查询,以获取纽约(NY)每位通勤者的平均通勤时间(以分钟为单位),以及纽约所有通勤者的平均通勤时间(以分钟为单位)。

示例:

输入:

rides

列名类型
idINTEGER
commuter_idINTEGER
start_dtDATETIME
end_dtDATETIME
cityVARCHAR

输出:

列名类型
commuter_idINTEGER
avg_commuter_timeFLOAT
avg_timeFLOAT

结果显示如下:

commuter_idavg_commuter_timeavg_time
112745
229745
331145

答案

解题思路

一般思路是,先计算纽约的平均通勤时间,然后再计算个人的,最后把结果汇总在一起。
其实,直接用窗口函数可以直接得出结果。

答案代码

下面是直接用一个窗口函数,完成对每个ID的平均值计算。

SELECT DISTINCTcommuter_id,FLOOR(AVG(TIMESTAMPDIFF(MINUTE,start_dt,end_dt)) OVER (PARTITION BY commuter_id)) avg_commuter_time,FLOOR(AVG(TIMESTAMPDIFF(MINUTE,start_dt,end_dt)) OVER ()) avg_time
FROM rides
WHERE city = 'NY'
  • FLOOR(): 用于向下取整,将平均值舍入到最接近的整数。
  • TIMESTAMPDIFF(): 用于计算两个时间戳之间的差值,单位为分钟。
  • AVG( ) OVER (PARTITION BY commuter_id): 用于对每个commuter_id进行分组,并计算每个分组的平均值。
  • AVG() OVER ():OVER ()`表示在整个数据集上进行计算

计算时间差的函数

TIMESTAMPDIFF()
TIMESTAMPDIFF(unit, start_datetime, end_datetime) 是一个用于计算两个日期时间之间差异的 MySQL 函数。它接受三个参数:时间单位、起始日期时间和结束日期时间。

在我们的答案中就用了TIMESTAMPDIFF(MINUTE, start_dt, end_dt)

TIMESTAMPDIFF` 函数的时间单位参数可以是以下之一:

  • MICROSECOND: 微秒
  • SECOND: 秒
  • MINUTE: 分钟
  • HOUR: 小时
  • DAY: 天
  • WEEK: 周
  • MONTH: 月
  • QUARTER: 季度
  • YEAR: 年

DATEDIFF()
DATEDIFF(date1, date2): 这个函数返回两个日期之间的天数差异。它接受两个日期参数,并返回 date2 减去 date1 的天数差异。

TIMESTAMPDIFF() 可以用来计算date 格式吗?
TIMESTAMPDIFF() 函数通常用于计算两个日期时间之间的差异,因此它的参数通常是 DATETIMETIMESTAMP 类型的数据。虽然可以接受 DATE 类型的数据作为参数,但是在处理时会将 DATE 类型的数据隐式转换为 DATETIME 类型,并将时间部分视为零值。

举个例子,如果你要计算两个日期之间的差异:
SELECT TIMESTAMPDIFF(DAY, '2022-01-01', '2022-01-05');

这将返回 4,表示 ‘2022-01-01’ 到 ‘2022-01-05’ 之间相隔 4 天。

虽然 TIMESTAMPDIFF() 可以处理 DATE 类型的参数,但是如果只是想计算日期之间的天数差异,使用 DATEDIFF() 更为简单和直观。
在这里插入图片描述

相关文章:

【数据分析面试】10. 计算平均通勤时间(SQL:timestampdiff() 和datediff()区别)

题目 假设你在Uber工作。rides表包含了关于Uber用户在美国各地的行程信息。 编写一个查询,以获取纽约(NY)每位通勤者的平均通勤时间(以分钟为单位),以及纽约所有通勤者的平均通勤时间(以分钟为…...

2024年150道高频Java面试题(二十二)

43. ArrayList 和 Vector 的区别是什么? ArrayList 和 Vector 是 Java 中用于存储对象的两种不同类型的动态数组。它们都实现了 List 接口,但存在一些重要的区别: 同步性: ArrayList 是不同步的,意味着它不是线程安全…...

如何使用校园网——Win10笔记本,台式机互开热点

当我们使用校园网的时候,往往只能连接一个电脑端,但是又想两个机子同时连接WIFI怎么办呢? 当然,前提条件是你先得其中一台电脑有网络哈 1、打开想开共享热点的电脑的设置 A、点击WIN,再点击设置 2、点击网络和Inte…...

c#:简洁实现if-else语句

c#:简洁实现if-else语句 在C#中,可以使用三元运算符(? :)来简洁地实现if-else语句。其语法格式为: 条件表达式 ? 表达式1 : 表达式2 例如:当条件表达式为真时,返回表达式1的值,否…...

金融贷款批准预测项目

注意:本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 ([www.aideeplearning.cn]) 在金融服务行业,贷款审批是一项关键任务,它不仅关系到资金的安全,还直接影响到金融机构的运营效率和风险管理…...

FR中隐藏系统管理--用户管理中 表格中每条数据中的编辑按钮,删除按钮

比如隐藏删除按钮: var userTableTools BI.Constants.getConstant("dec.constant.user.table.tools")for(var key in userTableTools){if(key "delete"){var deleteItem userTableTools["delete"]deleteItem.invisible true;}}...

函数重载和引用【C++】

文章目录 函数重载什么是函数重载?函数重载的作用使用函数重载的注意点为什么C可以函数重载,C语言不行? 引用什么是引用?引用的语法引用的特点引用的使用场景引用的底层实现传参时传引用和传值的效率引用和指针的区别 函数重载 什…...

rust-tokio发布考古

源头: Carl Lerche Aug 4, 2016 ​ I’m very excited to announce a project that has been a long time in the making. 我很兴奋地宣布一个酝酿已久的项目。 Tokio is a network application framework for rapid development and highly scalable deployments…...

3D医疗图像配准 | 基于Vision-Transformer+Pytorch实现的3D医疗图像配准算法

项目应用场景 面向医疗图像配准场景,项目采用 Pytorch ViT 来实现,形态为 3D 医疗图像的配准。 项目效果 项目细节 > 具体参见项目 README.md (1) 模型架构 (2) Vision Transformer 架构 (3) 量化结果分析 项目获取 https://download.csdn.net/down…...

设计模式(18):状态模式

核心 用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题 结构 环境类(Context): 环境类中维护一个State对象,它定义了当前的状态,并委托当前状态处理一些请求; 抽象状态类(State): 用于封装对象的一个特定状态所对应的行为&a…...

如果用大模型考公,kimi、通义千问谁能考高分?

都说大模型要超越人类了,今天就试试让kimi和通义千问做公务员考试题目,谁能考高分? 测评结果再次让人震惊! 问题提干:大小两种规格的盒装鸡蛋,大盒装23个,小盒装16个,采购员小王买了…...

如何在Java中创建对象输入流

在Java中创建对象输入流(ObjectInputStream)通常涉及以下步骤: 获取源输入流:首先,你需要有一个源输入流,它可能来自文件、网络连接或其他任何可以提供字节序列的源。 包装源输入流:接着&#…...

Vue 打包或运行时报错Error: error:0308010C

问题描述: 报错:Error: error:0308010C 报错原因: 主要是因为 nodeJs V17 版本发布了 OpenSSL3.0 对算法和秘钥大小增加了更为严格的限制,nodeJs v17 之前版本没影响,但 V17 和之后版本会出现这个错误…...

222222222222222222222222

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和…...

微信小程序 电影院售票选座票务系统5w7l6

uni-app框架:使用Vue.js开发跨平台应用的前端框架,编写一套代码,可编译到Android、小程序等平台。 框架支持:springboot/Ssm/thinkphp/django/flask/express均支持 前端开发:vue.js 可选语言:pythonjavanode.jsphp均支持 运行软件…...

C#:用定时器监控定时器,实现中止定时器正在执行的任务,并重启

Windows服务中使用的比较多的是定时器,但这种定时任务有个比较大的毛病:有时会莫名其妙地停止执行(长时间执行不完,假死),必须得手工重启Windows服务才能恢复正常。这个就太麻烦了。 有没有办法来实现定时…...

计算机组成原理 — CPU 的结构和功能

CPU 的结构和功能 CPU 的结构和功能CPU 概述控制器概述CPU 框架图CPU 寄存器控制单元 CU 指令周期概述指令周期的数据流 指令流水概述指令流水的原理影响流水线性能的因素流水线的性能流水线的多发技术流水线结构 中断系统概述中断请求标记和中断判优逻辑中断请求标记 INTR中断…...

npm包安装与管理:深入解析命令行工具的全方位操作指南,涵盖脚本执行与包发布流程

npm,全称为Node Package Manager,是专为JavaScript生态系统设计的软件包管理系统,尤其与Node.js平台紧密关联。作为Node.js的默认包管理工具,npm为开发者提供了便捷的方式来安装、共享、分发和管理代码模块。 npm作为JavaScript世…...

序列化结构(protobuf)实现一个TCP服务器(C++)

Protocol Buffers(protobuf)是一种由Google开发的用于序列化结构化数据的方法,通常用于在不同应用程序之间进行数据交换或存储数据。它是一种语言无关、平台无关、可扩展的机制,可以用于各种编程语言和环境中。 1、首先建立proto文…...

Python中的list()和map() 用法

list() 在Python中,list() 是一个内置函数,用于创建列表(list)对象。它有几个不同的用途,但最常见的是将一个可迭代对象(如元组、字符串、集合或其他列表)转换为一个新的列表。 以下是一些使用…...

ArcGIS Pro用户必看:解决CAD转SHP后坐标系丢失的完整配置流程(附Python脚本)

ArcGIS Pro用户必看:解决CAD转SHP后坐标系丢失的完整配置流程(附Python脚本) 当你从CAD图纸转换到SHP格式时,最令人头疼的问题莫过于坐标系信息的丢失。想象一下,你精心准备的规划图纸在GIS软件中变成了一堆无法定位的…...

CyberChef实战指南:数据处理的瑞士军刀,安全工程师的秘密武器

CyberChef实战指南:数据处理的瑞士军刀,安全工程师的秘密武器 【免费下载链接】CyberChef The Cyber Swiss Army Knife - a web app for encryption, encoding, compression and data analysis 项目地址: https://gitcode.com/GitHub_Trending/cy/Cybe…...

2026届毕业生推荐的六大AI辅助论文助手解析与推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 鉴于“降ai”所表达的意思不清晰确切,猜测围绕这一主题或许是在探究关于AI的热度…...

收藏级|2026大模型全景解析(小白/程序员必看):技术迭代+梯队格局+产业链+落地案例

2026年,全球AI产业正式迈入“寡头固化垂直突围”的成熟发展阶段,大模型技术彻底告别此前的参数竞赛,转向核心能力深耕与商业化落地。对于刚入门大模型的小白、深耕技术的程序员而言,本文将系统梳理国内外顶尖大模型的迭代成果与梯…...

别再让广播闪退!Android 14广播安全新规RECEIVER_EXPORTED的保姆级避坑指南

Android 14广播安全新规:RECEIVER_EXPORTED的深度解析与实战指南 去年秋天,当Google正式发布Android 14时,许多开发者发现原本运行良好的广播注册代码突然开始抛出SecurityException。这个看似简单的API变更背后,其实是Android团队…...

自然语言理解在AI原生应用领域的关键作用

自然语言理解在AI原生应用领域的关键作用关键词:自然语言理解(NLU)、AI原生应用、大语言模型、多模态交互、意图识别、情感分析、智能交互摘要:本文将深入探讨自然语言理解(NLU)如何成为AI原生应用的“大脑…...

别再乱点默认应用了!麒麟Kylin Desktop V10 SP1默认程序设置,一篇讲清逻辑与重置

麒麟Kylin桌面系统V10 SP1:默认应用管理的深度解析与实战指南 你是否曾在安装WPS或浏览器时,面对系统弹出的默认应用选择窗口随手一点,结果发现.docx文件全被浏览器打开?这种"手滑"操作在麒麟Kylin Desktop V10 SP1系统…...

BilibiliDown:如何轻松搞定B站视频下载与批量管理的完整指南

BilibiliDown:如何轻松搞定B站视频下载与批量管理的完整指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mir…...

Python 学习笔记:学习路线图规划

1989 年的圣诞节期间,时任荷兰数学和计算机科学研究学会(CWI)研究员的 Guido van Rossum[1] 决定基于 ABC 语言设计并实现一门新的脚本编程语言,最初目的是用于替代 Unix shell 和部分 C 程序,以承担 Amoeba 分布式操作…...

OpenClaw性能调优:Qwen3-4B-Thinking-2507-GPT-5-Codex-Distill-GGUF长文本处理技巧

OpenClaw性能调优:Qwen3-4B-Thinking-2507-GPT-5-Codex-Distill-GGUF长文本处理技巧 1. 为什么需要长文本优化 上周我尝试用OpenClaw处理一份200页的技术文档摘要任务时,遭遇了典型的"长文本困境"——模型要么漏掉关键段落,要么生…...