首页 > 解决方案 > 计算速度SQL

问题描述

我有一个列“时间和列距离”的表。我想要一列按小时计算的速度计算器。

这是我的桌子

+---------+---------+----------------------+----------+--------------------+
| comp    | idname  | name                 | distance | time               | 
+---------+---------+----------------------+----------+--------------------+
| 1041321 | 1230274 | Berlin Calling (IRE) | 1400     | 1'30"74            | 
| 1086603 | 1230274 | Berlin Calling (IRE) | 1600     | 1'42"05            |
| 1106577 | 1230274 | Berlin Calling (IRE) | 1650     | 1'46"56            | 
| 1009518 | 1230274 | Berlin Calling (IRE) | 1700     | 1'44"23            |
| 1166930 | 1230274 | Berlin Calling (IRE) | 1800     | 2'06"54            | 
+---------+---------+----------------------+----------+--------------------+

我想要这样的输出:

+---------+---------+----------------------+----------+--------------------+------------+
| comp    | idname  | name                 | distance |     time           | speed/KM/h |
+---------+---------+----------------------+----------+--------------------+------------+
| 1041321 | 1230274 | Berlin Calling (IRE) | 1400     | 1'30"74            | 55,5       |
| 1086603 | 1230274 | Berlin Calling (IRE) | 1600     | 1'42"05            | 56,4       |
| 1106577 | 1230274 | Berlin Calling (IRE) | 1650     | 1'46"56            | 55,7       |
| 1009518 | 1230274 | Berlin Calling (IRE) | 1700     | 1'44"23            | 58,7       |
| 1166930 | 1230274 | Berlin Calling (IRE) | 1800     | 2'06"54            | 51,13      |
+---------+---------+----------------------+----------+--------------------+------------+

谢谢您的帮助

标签: sql

解决方案


日期/时间和字符串解析函数特定于数据库。我将根据您提出的其他问题假设您正在使用 MySQL。

如果是这样,您可以使用:

select t.*,
       distance / (substring_index(time, '''', 1) * 24.0 +
                   substring_index(substring_index(time, '''', 2), '"') * 1.0 +
                   substring_index(time, '"', -1) / (60.0)
                  ) as speed
from t;

其他数据库具有解析字符串的功能,但这在数据库之间差异很大。

我强烈建议您将时间存储为十进制小时数,而不是您使用的神秘格式。


推荐阅读