【数据分析面试】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 DISTINCT
    commuter_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() 更为简单和直观。
在这里插入图片描述

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

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

相关文章

谈谈 MySQL 的锁

前言 在 MySQL 中,锁这个定义其实还是蛮重要的。经过我这几天的学习,我感觉锁是一个可以说难又可以说不难的知识点。难就难在锁可以与事务、多线程、并发结合在一起,这就很难了。但是,假如锁没有结合这些知识点,就单单…

产品推荐 | 中科亿海微推出亿迅®A8000金融FPGA加速卡

01、产品概述 亿迅A8000金融加速卡,是中科亿海微联合金融证券领域的战略合作伙伴北京睿智融科,将可编程逻辑芯片与金融行业深度结合,通过可编程逻辑芯片对交易行情加速解码,实现低至纳秒级的解码引擎,端到端的处理时延…

【Arthas案例】某应用依赖两个GAV-classifier不同的snakeyaml.jar,引起NoSuchMethodError

多个不同的GAV-classifier依赖冲突,引起NoSuchMethodError Maven依赖的三坐标体系GAV(G-groupId,A-artifactId,V-version) classifier通常用于区分从同一POM构建的具有不同内容的构件物(artifact)。它是可选的&#xf…

每日一题:矩阵置零

给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1: 输入:matrix [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]]使用两个标记变量。 class Sol…

Pygame基础10-物理模拟

PyMunk PyMunk是一个模拟物理的库。 注意,PyMunk只是进行物理模拟,不包含可视化的功能。如果需要可视化,可使用pygame等库。 可用pip安装pymunk pip install pymunk pymunk中的概念: space: 物理空间。 包含gravity 模…

网络抓包专题

导航目录 HTTP 原理HTTPS 原理TLS 原理网络抓包原理一. 什么是抓包?二. 抓包的原理对HTTP请求进行抓包对HTTPS请求进行抓包 三. Android设备抓包问题Android6.0 及以下系统Android7.0 及以上系统方式一:方式二 HTTP 原理 HTTP 详解 点击跳转 HTTPS 原理…

MPEG-1 详解

MPEG-1 详解 MPEG-1 详解特点MPEG-1 中的运动补偿与 B 帧的引入MPEG-1 vs H.261MPEG-1 视频数据流的结构MPEG-1 视频压缩模式MPEG-1 视频解码框图MPEG-1 音频编码模式MPEG-1 audio layer 1MPEG-1 audio layer 2MPEG-1 audio layer 3 MPEG-1 音频编码框图MPEG-1 音频解码框图参考…

基于matlab解决鸡兔同笼问题

一、什么是鸡兔同笼? 鸡兔同笼问题是一种经典的数学问题,最早出自于《孙子算经》,详细成书时间不详,但可以确定的是,它不早于汉代,不晚于南北朝时期[6]。这个问题在中国数学史上具有重要的意义&#xff0c…

WEB漏洞挖掘详细教程--用户输入合规性(sql注入测试)

前置教程:WEB漏洞挖掘(SRC)详细教程--信息收集篇-CSDN博客 WEB漏洞挖掘(SRC)详细教程--身份认证与业务一致性-CSDN博客 WEB漏洞挖掘(SRC)详细教程--业务数据篡改-CSDN博客 2.4 用户输入合规性…

RabbitMQ基于Java实现消息应答

RabbitMQ 概念 RabbitMQ是一个消息中间件:它接受并转发消息。你可以把它当做一个快递站点,当你要发送一个包裹时,你把你的包裹放到快递站,快递员最终会把你的快递送到收件人那里,按照这种逻辑RabbitMQ是一个快递站, 一个快递员帮你传递快件…

Golang Gin框架

1、这篇文章我们简要讨论一些Gin框架 主要是给大家一个基本概念 1、Gin主要是分为路由和中间件部分。 Gin底层使用的是net/http的逻辑,net/http主要是说,当来一个网络请求时,go func开启另一个协程去处理后续(类似epoll)。 然后主协程持续…

备战蓝桥杯---递归与DFS刷题2

1. 数据范围允许直接暴力把所有组合都写一遍,我们用Pair来存,在sort中分式比较只要把自己的分子与对方的分母乘比较即可,下面介绍一下st树的写法,具体原理就不说了,它是先[0/1,1/1]然后取分子分母的平均化成两个区间&a…

【C++】学习多态原理

目录 一、虚函数表二、多态原理三、关于动态绑定与静态绑定 一、虚函数表 先来看一段代码&#xff1a;sizeof(Base)是多少&#xff1f; class Base { public:virtual void Func1(){cout << "Func1()" << endl;} private:int _b 1; };int main() {cout…

【Linux】make 工具和 Makefile 文件的引入

前面提到了 gcc 编译器&#xff0c;那么使用 gcc 编译器肯定就会接触到 Makefile 。当源码文件比较多的时候就不适合通过直接输入 gcc 命令来编译&#xff0c;这时候就需要一个自动化的编译工具 make 。 举例&#xff1a;通过键盘输入两个整形数字&#xff0c;然后计算他们的和…

elasticSearch原理浅尝

终于等到你 马上就要放弃 开个玩笑 &#xff0c;进入正题 on fire 基础的咱不说了&#xff0c;一搜一麻袋 读 全文检索&#xff1a; 协调节点广播查询请求到相关分片 并 将其响应 整合 全局排序 返回结果集合 带路由&#xff1a;具体文档 shard hash(document_id) % (…

国外服务器托管需要了解哪些信息

国外服务器托管服务提供了一种在国外租用并管理服务器的方式&#xff0c;适用于需要特定地域服务或对本地法规有特殊要求的企业和个人。那么想要进行国外服务器托管需要了解哪些信息呢?Rak部落小编为您整理发布国外服务器托管相关内容。 以下是一些关于国外服务器托管服务的详…

YoloV8改进策略:BackBone改进|ELA

文章目录 摘要1、引言2、相关工作3、方法3.1、重新审视坐标注意力3.1.1、坐标注意力3.1.2、坐标注意力的不足 3.2、高效局部注意力3.3、多个ELA版本设置3.4、可视化3.5、实现 4、实验4.1、实验细节4.2、ImageNet上的图像分类4.3、目标检测4.4、语义分割 5、结论 摘要 https://…

如何搭建自己的百度网盘目录树搜索系统

许多做虚拟资源的小伙伴都有好几个百度网盘账号&#xff0c;大部分也都是扩容盘&#xff0c;但是扩容盘不能搜索&#xff0c;这个就很难受&#xff0c;不能让用户搜索自己的资源&#xff0c;这无意是是对成交概率是致命的&#xff0c;几百万条的数据&#xff0c;不能让用户一个…

【Java】jdk1.8 Java代理模式,Jdk动态代理讲解(非常详细,附带class文件)

&#x1f4dd;个人主页&#xff1a;哈__ 期待您的关注 一、什么是代理模式 想要学代理模式&#xff0c;我们就要先弄清一个概念“什么是代理”&#xff1f; 在我们的现实生活中&#xff0c;你或许不少听过关于代理的名词&#xff0c;如&#xff1a;代理商。那什么又叫做代理…

Linux课程____LVM(逻辑卷管理器)

LVM 技术是在硬盘分区和文件系统之间添加了一个逻辑层&#xff0c;它提供了一个抽象的卷组&#xff0c;可以把多块硬盘进行卷组合并。 这样一来&#xff0c;用户不必关心物理硬盘设备的底层架构和布局&#xff0c;就可以实现对硬盘分区的动态调整。 动态调整磁盘容量&#xff…