首页 > 数据库 >【LeetCode 2142. 每辆车的乘客人数 I】乘客到站等车,车到站载客。MySQL用户变量编程完成

【LeetCode 2142. 每辆车的乘客人数 I】乘客到站等车,车到站载客。MySQL用户变量编程完成

时间:2024-01-12 21:59:49浏览次数:29  
标签:车到 passenger 乘客 bus number station MySQL mytype id

题目地址

https://leetcode.cn/problems/the-number-of-passengers-in-each-bus-i/description/

思路

将所有关键时刻作为tick。(同一时刻车和人同时到,默认人在车前到)
之后按照tick升序,使用MySQL用户变量编程完成计算逻辑。
输出结果。

代码

with ticks as(
    select arrival_time as tick,
    bus_id,
    null as passenger_id,
    "bus" as mytype
    from Buses 
    union 
    select arrival_time as tick,
    null as bus_id,
    passenger_id,
    "passenger" as mytype
    from Passengers
)
,
t1 as(
    select * ,
    row_number() over(order by  tick asc, field(mytype, "passenger","bus")) as rn
    from ticks
)
,
t2  AS (
    SELECT
        #------------只需要修改里面的逻辑就行。注意语句是“顺序执行”的-------------------------------
        *,

        (case when mytype="bus" then @station_passenger_number 
          when mytype="passenger" then @station_passenger_number := @station_passenger_number+1
        end) AS station_passenger_number,
        (case when mytype="bus" then @station_passenger_number := 0 
          when mytype="passenger" then @station_passenger_number := @station_passenger_number end )
        #-------------只需要修改里面的逻辑就行。注意语句是“顺序执行”的------------------------------
    FROM
        (SELECT @station_passenger_number := 0 ) vars,
        (SELECT * FROM t1 ORDER BY rn  asc ) ordered_ticks
)

select bus_id, cast(station_passenger_number as unsigned int) as passengers_cnt
from t2
where mytype="bus"
order by bus_id asc

标签:车到,passenger,乘客,bus,number,station,MySQL,mytype,id
From: https://www.cnblogs.com/yhm138/p/17961672

相关文章

  • mysql8.0窗口函数
    2、新特性1:窗口函数2.1、使用窗口函数前后对比假设我现在有这样一个数据表,它显示了某购物网站在每个城市每个区的销售额:CREATETABLEsales(idINTPRIMARYKEYAUTO_INCREMENT,cityVARCHAR(15),countyVARCHAR(15),sales_valueDECIMAL);INSERTINTOsales(city,county......
  • 简单易用的 MySQL 官方压测工具
    一、MySQL自带的压力测试工具Mysqlslapmysqlslap是mysql自带的基准测试工具,该工具查询数据,语法简单,灵活容易使用.该工具可以模拟多个客户端同时并发的向服务器发出查询更新,给出了性能测试数据而且提供了多种引擎的性能比较。mysqlslap为mysql性能优化前后提供了直观的验证依据......
  • GaussDB(for MySQL) RegionlessDB发布:全球数据库技术
    本文分享自华为云社区《GaussDB(forMySQL)RegionlessDB发布:全球数据库技术》,作者:GaussDB数据库。1.技术背景对于一些典型行业,如跨境电商和大型互联网企业,其业务往往遍及世界各地。在当今中资出海的浪潮下,客户业务全球化部署诉求对传统的数据库部署形态提出了挑战。过去客户主要......
  • Ubuntu系统安装mysql
    1.查看有没有安装mysql dpkg-l|grepmysql2.更新ubantu包索引sudoaptupdate 3.安装mysqlsudoapt-getinstallmysql-server 4.初始化环境sudomysql_secure_installation  5.查看mysql服务状态systemctlstatusm......
  • 差异摘要:MySQL 与MariaDB
    MariaDB和MySQL之间有何区别?MySQL和MariaDB都是开源数据库技术。您可以使用它们以包含行和列的表格格式存储数据。MySQL是最广泛采用的开源数据库。它是许多热门网站、应用程序和商业产品的主要关系数据库。MariaDB是MySQL的修改版本。在MySQL被Oracle公司收购后,出于......
  • mysql8.0新特性
    1、mysql8.0新特性概述MySQL从5.7版本直接跳跃发布了8.0版本,可见这是一个令人兴奋的里程碑版本。MySQL8版本在功能上做了显著的改进与增强,开发者对MySQL的源代码进行了重构,突出的一点是多MySQLOptimizer优化器进行了改进。不仅在速度上得到了改善,还为用户带来了更好的性能和更......
  • mysql死锁日志
    发生死锁,第一时间查看死锁日志在分析日志前,我们要知道InnoDB中锁在日志中具体显示的数据类型,平时我们常接触到的是RecordLocks(记录锁),GapLocks(间隙锁),Next-KeyLocks和InsertIntentionLocks(插入意向锁)。这四种锁对应的死锁如下:记录锁(LOCK_REC_NOT_GAP):lock_modeXlocksrec......
  • Mysql 插入数据忽略已存在数据
    MySQL的INSERTIGNOREINTO语句用于向表中插入数据,如果数据已经存在,则忽略插入操作而不报错。以下是INSERTIGNOREINTO语句的基本语法:INSERTIGNOREINTOtable_name(column1,column2,...)VALUES(value1,value2,...);这里的table_name是要插入数据的表名,(column1,colu......
  • MySQL记录锁、间隙锁、临键锁(Next-Key Locks)加锁过程
    innodb一定存在聚簇索引,默认以主键作为聚簇索引有几个索引,就有几棵B+树(不考虑hash索引的情形)聚簇索引的叶子节点为磁盘上的真实数据。非聚簇索引的叶子节点还是索引(id主键值),指向聚簇索引B+树。锁类型:共享锁(S锁):假设事务T1对数据A加上共享锁,那么事务T2可以读数据A,不能修......
  • 随笔记录-mysql 导入
     mysql-hlocalhost-utest-P3306-p 459 mysql-h192.168.1.12-utest_user2312-P3306-pLOADDATALOCALINFILE'/home/hctest/load_41_10.txt'INTOTABLEt15fieldsterminatedby',';[root@localhosthctest]#catuid_mysql.sh#!/bi......