首页 > 数据库 > mysql教程 > 如何使用 SQL 查找每趟列车的最新目的地?

如何使用 SQL 查找每趟列车的最新目的地?

Linda Hamilton
发布: 2025-01-22 07:31:08
原创
625 人浏览过

How to Find the Latest Destination for Each Train Using SQL?

使用MAX(DATE)和GROUP BY子句查找最新目的地

本SQL查询的目标是检索每列火车的最新目的地,以最大出发时间为准。然而,当从GROUP BY子句中排除'Dest'列时,遇到错误“ora-00979 not a GROUP BY expression”,这似乎与直觉相悖。

为了解决这个问题,我们可以利用RANK()窗口函数为每列火车组内的每个目的地分配一个排名。具体来说,排名最高的目的地将对应于最新的出发时间。

以下SQL查询演示了这种方法:

<code class="language-sql">SELECT train, dest, time
FROM ( 
  SELECT train, dest, time, 
    RANK() OVER (PARTITION BY train ORDER BY time DESC) dest_rank
    FROM traintable
  ) where dest_rank = 1</code>
登录后复制

查询工作原理如下:

  1. 内部子查询创建一个中间结果集,其中包括火车、目的地、出发时间以及每列火车组内每个目的地的排名。RANK()函数按出发时间的降序分配排名,最高排名(1)表示最新的出发时间。
  2. 外部查询选择目的地排名等于1的记录。这有效地过滤掉了除代表每列火车最新目的地的行以外的所有行。
  3. 最终结果显示每列火车的火车、最新目的地和相应的出发时间。

以上是如何使用 SQL 查找每趟列车的最新目的地?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板