如何计算 MySQL SELECT 查询中行之间的差异?

DDD
发布: 2024-11-07 01:42:02
原创
280 人浏览过

How can I calculate the difference between rows in a MySQL SELECT query?

计算 MySQL SELECT 查询中的行之间的差异

要计算 SELECT 查询中的行之间的差异,请考虑以下方法:

将 LEFT JOIN 与 MAX() 子查询结合使用

您可以根据条件使用 LEFT JOIN 将一行与其前一行连接。在您的情况下,您希望找到每个日期的前一行:

SELECT
    mt1.ID,
    mt1.Kilometers,
    mt1.date,
    mt1.Kilometers - IFNULL(mt2.Kilometers, 0) AS number_km_since_last_date   
FROM
    myTable mt1
    LEFT JOIN myTable mt2
        ON mt2.Date = (
            SELECT MAX(Date)
            FROM myTable mt3
            WHERE mt3.Date < mt1.Date
        )
ORDER BY mt1.date
登录后复制

使用 Lag() 函数模拟

因为 MySQL 没有lag() 函数,您可以使用用户定义的变量来模拟:

SET @kilo=0;

SELECT
    mt1.ID,
    mt1.Kilometers - @kilo AS number_km_since_last_date,
    @kilo := mt1.Kilometers Kilometers,
    mt1.date
FROM myTable mt1
ORDER BY mt1.date
登录后复制

结果

两种方法都会产生所需的输出:

ID | Kilometers | date       | car_id | car_driver | number_km_since_last_date   
 1 | 100        | 2012-05-04 | 1 | 1 | 0  
 2 | 200        | 2012-05-08 | 1 | 1 | 100  
 4 | 600        | 2012-05-16 | 1 | 1 | 400  
 3 | 1000       | 2012-05-25 | 1 | 1 | 400
登录后复制

以上是如何计算 MySQL SELECT 查询中行之间的差异?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!