求如何用mysql实现计算上下两条记录的差的方法。
如下参考:
1.创建一个表并插入数据,如下图所示。
2.按字段名顺序从表名中选择*,如下图。
3.根据班级分组程度(groupby),将数据分为三类:肉类、蔬菜和水果。
4.按类分组后,对结果进行处理,分别计算三个类的总金额。在本例中,sum是mysql提供的一个内置函数(聚合函数),它是统计组合的。
5.分组之后,可以使用聚合函数执行一系列查询 *** 作,询问每个类中有多少个查询 *** 作。
6.组后面跟着过滤器,如下所示。
结论:一个标准的SQL查询语句。
前提:假设起始时间:start_at,结束时间:end_at。
现在根据不同的字段类型说明如何写。
1 - INT类型,存储时间戳
SELECT * FROM table_name WHERE ( end_at - start_at ) >3600
2 - DATETIME类型
假如 start_at 格式类似于 “2020-10-01 12:13:14”。那么使用函数进行求差值:
SELECT * FROM table_name WHERE TIMESTAMPDIFF(SECOND, start_at, end_at) >3600
以上。
这个结果要从第一个开始吗?那样就有点复杂了。这个行不行,结果是从第二行开始的:
mysql> set @last_id := -1Query OK, 0 rows affected (0.00 sec)
mysql> select id, A, B, result
-> from
-> (
-> select
-> table1.*,
-> @last_id,
-> if(@last_id < 0, null, id - @last_id) as result,
-> @last_id := id
-> from
-> table1
-> ) as tmp
->
+----+------+------+--------+
| id | A | B | result |
+----+------+------+--------+
| 1 | 2 | 1 | NULL |
| 21 | 1 | 1 | 20 |
| 33 | 3 | 2 | 12 |
+----+------+------+--------+
3 rows in set (0.00 sec)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)