首页 > 其他分享 >3166. 计算停车费与时长

3166. 计算停车费与时长

时间:2024-11-27 16:58:38浏览次数:9  
标签:00 06 car time 停车费 2023 3166 id 时长

力扣题目跳转(3166. 计算停车费与时长 - 力扣(LeetCode)

表:ParkingTransactions

+--------------+-----------+
| Column Name  | Type      |
+--------------+-----------+
| lot_id       | int       |
| car_id       | int       |
| entry_time   | datetime  |
| exit_time    | datetime  |
| fee_paid     | decimal   |
+--------------+-----------+
(lot_id, car_id, entry_time) 是这张表的主键(有不同值的列的组合)。
这张表的每一行包含停车场的 ID,车的 ID,入场和出场时间,以及停车时长的支付费用

 题目要求:

编写一个解决方案来找到 所有停车场 中每辆车支付的 总停车费,以及  辆车支付的 每小时平均费用(舍入到 2 位小数)。同时,找到每辆车 总花费时间 最多的 停车场

返回结果表以 car_id 升序 排序。

注意:测试用例的生成方式使得单辆汽车不能同时位于多个停车场。

结果格式如下所示。

示例:

输入:

ParkingTransactions 表:

+--------+--------+---------------------+---------------------+----------+
| lot_id | car_id | entry_time          | exit_time           | fee_paid |
+--------+--------+---------------------+---------------------+----------+
| 1      | 1001   | 2023-06-01 08:00:00 | 2023-06-01 10:30:00 | 5.00     |
| 1      | 1001   | 2023-06-02 11:00:00 | 2023-06-02 12:45:00 | 3.00     |
| 2      | 1001   | 2023-06-01 10:45:00 | 2023-06-01 12:00:00 | 6.00     |
| 2      | 1002   | 2023-06-01 09:00:00 | 2023-06-01 11:30:00 | 4.00     |
| 3      | 1001   | 2023-06-03 07:00:00 | 2023-06-03 09:00:00 | 4.00     |
| 3      | 1002   | 2023-06-02 12:00:00 | 2023-06-02 14:00:00 | 2.00     |
+--------+--------+---------------------+---------------------+----------+

输出:

+--------+----------------+----------------+---------------+
| car_id | total_fee_paid | avg_hourly_fee | most_time_lot |
+--------+----------------+----------------+---------------+
| 1001   | 18.00          | 2.40           | 1             |
| 1002   | 6.00           | 1.33           | 2             |
+--------+----------------+----------------+---------------+

解释:

  • 对于汽车 ID 1001:
    • 从 2023-06-01 08:00:00 到 2023-06-01 10:30:00 在停车场 1:2.5 小时,费用 5.00
    • 从 2023-06-02 11:00:00 到 2023-06-02 12:45:00 在停车场 1:1.75 小时,费用 3.00
    • 从 2023-06-01 10:45:00 到 2023-06-01 12:00:00 在停车场 2:1.25 小时,费用 6.00
    • 从 2023-06-03 07:00:00 到 2023-06-03 09:00:00 在停车场 3:2 小时,费用 4.00
    总共支付费用:18.00,总小时:7.5,每小时平均费用:2.40,停车场 1 总花费时间最长:4.25 小时。
  • 对于汽车 ID 1002:
    • 从 2023-06-01 09:00:00 到 2023-06-01 11:30:00 在停车场 2:2.5 小时,费用 4.00
    • 从 2023-06-02 12:00:00 到 2023-06-02 14:00:00 在停车场 3:2 小时,费用 2.00
    总共支付费用:6.00,总小时:4.5,每小时平均费用:1.33,停车场 2 总花费时间最长:2.5 小时。

注意: 输出表以 car_id 升序排序。

case 1 的建表语句。

CREATE TABLE If not exists ParkingTransactions (
    lot_id INT,
    car_id INT,
    entry_time DATETIME,
    exit_time DATETIME,
    fee_paid DECIMAL(10, 2)
)

Truncate table ParkingTransactions
insert into ParkingTransactions (lot_id, car_id, entry_time, exit_time, fee_paid) values ('1', '1001', '2023-06-01 08:00:00', '2023-06-01 10:30:00', '5.0')
insert into ParkingTransactions (lot_id, car_id, entry_time, exit_time, fee_paid) values ('1', '1001', '2023-06-02 11:00:00', '2023-06-02 12:45:00', '3.0')
insert into ParkingTransactions (lot_id, car_id, entry_time, exit_time, fee_paid) values ('2', '1001', '2023-06-01 10:45:00', '2023-06-01 12:00:00', '6.0')
insert into ParkingTransactions (lot_id, car_id, entry_time, exit_time, fee_paid) values ('2', '1002', '2023-06-01 09:00:00', '2023-06-01 11:30:00', '4.0')
insert into ParkingTransactions (lot_id, car_id, entry_time, exit_time, fee_paid) values ('3', '1001', '2023-06-03 07:00:00', '2023-06-03 09:00:00', '4.0')
insert into ParkingTransactions (lot_id, car_id, entry_time, exit_time, fee_paid) values ('3', '1002', '2023-06-02 12:00:00', '2023-06-02 14:00:00', '2.0')

一     我们先使用  timestampdiff 函数获取两个时间段的分钟差值,再除以 60 换算成小时。

select
    *,
    timestampdiff(minute ,entry_time,exit_time)/60 as ht
from parkingtransactions;

输出如下

二    使用 cte 然后进行分组,列出停车时长的排名。

with tmp as
(select
    *,
    timestampdiff(minute ,entry_time,exit_time)/60 as ht
from parkingtransactions)
select  car_id,
        lot_id,
        sum(fee_paid) as fp,
        sum(ht) as ht,
        rank() over (partition by car_id order by sum(ht) desc) as rn
from tmp group by car_id,lot_id;

输出如下

然后再使用分组聚合,对数据进行微操即可。

with tmp as
(select
    *,
    timestampdiff(minute ,entry_time,exit_time)/60 as ht
from parkingtransactions),
tmp1 as
(select  car_id,
        lot_id,
        sum(fee_paid) as fp,
        sum(ht) as ht,
        rank() over (partition by car_id order by sum(ht) desc) as rn
from tmp group by car_id,lot_id)
select
    car_id,
    sum(fp) as total_fee_paid,
    round(sum(fp) / sum(ht),2) as avg_hourly_fee,
    sum(if(rn = 1,lot_id,0)) as most_time_lot
from tmp1
group by car_id order by car_id;

这里我使用了 if 判断来获取 停车场号

以上就是全部答案,如果对你有帮助请点个赞,谢谢。

来源:力扣(leecode

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 转载请注明出处:

3166. 计算停车费与时长-CSDN博客(lot_id, car_id, entry_time) 是这张表的主键(有不同值的列的组合)。这张表的每一行包含停车场的 ID,车的 ID,入场和出场时间,以及停车时长的支付费用。我会尽快把力扣上的所有数据库题目发出来。著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。测试用例的生成方式使得单辆汽车不能同时位于多个停车场。输出表以 car_id 升序排序。编写一个解决方案来找到。https://blog.csdn.net/CYJ1844/article/details/144084510

我会尽快把力扣上的所有数据库题目发出来。感兴趣的可以点个赞与关注。每天不定时跟新。

标签:00,06,car,time,停车费,2023,3166,id,时长
From: https://blog.csdn.net/CYJ1844/article/details/144084510

相关文章

  • 国家和地区代码列表,ISO 3166-1:2006
    本文根据ISO3166-1:2006(InternationalStandardNormeInternationale)英文版(含2007年补充说明)整理。与ISO3166-1:1997相比,2006版新增的国家和地区已在备注栏中标出。2006版与1997版相比删除的条目是:南斯拉夫YugoslaviaYU\YUG\891。本文所列的国家地区中文名称,依照GB/T......
  • 快手观看时长建模:CREAD
    将观看时长作为连续值预测,会带来“回归问题”,即会放大对异常值和潜在预测偏差的敏感性,常见的一种方法是把时长分段转为分类问题来预估,CREAD正是提出了一种回归转分类的处理方法。CREAD的流程如下图所示,把观看时长分为M个桶,在每个桶内预估P(y>t|x)的概率 经过推导可以得到最后......
  • 智享AI无人直播系统—实时声音驱动/24小时声音话术不重复(无限OEM贴牌+无限时长+无限
    在当今数字化浪潮汹涌澎湃的时代,直播作为一种极具影响力的营销手段,如同一颗璀璨的明星,在商业的天空中闪耀着独特的光芒。它以直观、实时的传播方式,打破了时空的界限,将产品与服务生动地展示在广大消费者面前,为企业与消费者之间搭建起了一座沟通的桥梁。然而,随着市场的不断演变和......
  • jsp测试缺陷管理系统3166o程序+源码+数据库+调试部署+开发环
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景随着软件行业的迅速发展,软件质量成为企业竞争力的关键因素。在软件开发过程中,测试缺陷管理系统是确保软件质量的重要环节。传统的缺陷......
  • TS5A3166DBVR模拟开关IC芯片原装现货PDF数据手册引脚图功能框图
    TS5A3166的说明TS5A3166器件是一款单刀单掷(SPST)模拟开关,工作电压范围为1.65V至5.5V。此器件具有较低的导通状态电阻。该器件具有出色的总谐波失真(THD)性能和极低的功耗。这些特性使得这款器件适合于便携式音频应用中对于高效率、高电源密度和稳健性的需求。TS......
  • nginx: 分析最慢的url(日志中增加请求时长)
    一,设置nginx的日志格式:1,编辑nginx.conf[root@blogconf]#vinginx.conf说明:比默认设置只是在末尾增加了$request_time一项log_formatmain'$remote_addr-$remote_user[$time_local]"$request"''$status$body_bytes_sent"......
  • 【运营攻略】关于游戏在线时长分析和讨论
    【运营攻略】数据分析中DAU数据模型【运营攻略】游戏发行提案案例(一):IP型产品现在很多游戏游一个典型的玩家刺激活动,那就是倒计时,如下图所示:这些游戏设计中都有一个共同的点。拿“抽卡”来说,如果游戏设置为首日共计5次,每次10分钟。如果你感兴趣,可能会问:为什么是5次,且每次10......
  • ASP.NET 8 AOT 遍历文件夹获取文件名称及时长
    朋友下了N多视频记不住文件夹下都有啥了…问批处理怎么导出文件夹下所有文件名及视频时长…批处理导出文件名好弄,获取视频时长真没用过…想到.net控制台程序AOT发布,不和批处理差不多效果…新建个控制台项目选下使用AOT首先要获取文件的时长,我们需要用下TagLibSharpInstall-P......
  • EasyCVR(V3.6.0)播放鉴权与播放限制时长的区别介绍
    有用户部署EasyCVR视频汇聚平台的新版本后(V3.6.0),发现新增了播放鉴权的配置项,于是咨询我们这个功能和之前的播放限制时长功能有何区别。今天我们就来解释下。其实这两个功能针对性不一样,播放鉴权是针对web页面,播放限制时长则是针对视频流。例如,将播放限制时长设置为2分钟,则代表该通......
  • 20240908_030339 编程剪辑 读取音频对像获得音频时长
    需求有一个目录里存放了多个音频文件我们要获取这些音频文件的相关信息编写一个方法接收音频文件的目录返回音频信息列表示例......