如何在MySQL中为每一行的唯一列值选择两条记录?

蒸气59:

我有一个像这样的MySQL表:

+----+-----+-------+------+------+-------+---------------------+
| ID | GID | Name  |  p1  | p10  | p100  |      createdAt      |
+----+-----+-------+------+------+-------+---------------------+
|  1 | 100 | Item1 |  150 | 1499 | 10245 | 2020-07-04 12:00:00 |
|  2 | 857 | Item2 | 1047 | 9875 | 90000 | 2020-07-04 12:00:10 |
|  3 | 100 | Item1 |  149 | 1495 | 10245 | 2020-07-04 12:15:00 |
|  4 | 857 | Item2 | 1099 | 9875 | 89999 | 2020-07-04 12:15:10 |
|  5 | 100 | Item1 |  149 | 1495 | 10247 | 2020-07-04 12:30:00 |
|  6 | 857 | Item2 |  970 | 9879 | 89998 | 2020-07-04 12:30:10 |
+----+-----+-------+------+------+-------+---------------------+

我尝试为每个唯一GID输出p1, p10, p100最近两个的createdAt

输出示例:

+-----+-------+------+------+-------+---------+----------+-----------+
| GID | Name  |  p1  | p10  | p100  | p1-last | p10-last | p100-last |
+-----+-------+------+------+-------+---------+----------+-----------+
| 100 | Item1 |  149 | 1495 | 10245 |     149 |     1495 |     10247 |
| 857 | Item2 | 1099 | 9875 | 89999 |     970 |     9879 |     89998 |
+-----+-------+------+------+-------+---------+----------+-----------+

我尝试使用子查询来实现我的目标,但对此我并不满意。

谢谢任何能为我提供信息和帮助的人。

戈登·利诺夫(Gordon Linoff):

您将为此使用lag()

select gid, name, p1, p10, p100, prev_p1, prev_p10, prev_p100
from (select t.*,
             lag(p1) over (partition by gid order by createdAt) as prev_p1,
             lag(p10) over (partition by gid order by createdAt) as prev_p10,
             lag(p100) over (partition by gid order by createdAt) as prev_p100,
             row_number() over (partition by gid order by createdAt desc) as seqnum
      from t
     ) t
where seqnum = 1;

是一个db <>小提琴。

子查询返回每列的先前值。外部查询仅过滤每个gid/ name组合的最新行

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

两条记录为一行的记录消息

如何在Alembic迁移中为每一行设置唯一值

如何通过字典为DataFrame中的每一行设置基于其他列的唯一列ID

如何在Tensorflow张量中的每一行和每一列中选择前q个元素?

sqlite表中的每一行如何唯一?不只是一列

查找具有唯一列的数组中每一行的最小值

如何在MySQL表中为同一行的两列插入值

在mysql中如何从一组给定的值中为表中的每一行设置一列

如何在MySQL的另一列中的两个唯一值之间更新一列?

如何获取数据框中每一行的每一列的值和类型?

从仅在一列中具有重复值的表中选择唯一行

如何使用 jQuery 从每一行中随机选择一列?

如何在Python中为数据框的每一行创建唯一的XML

如何在MYSQL中为单个ID计算同一列中记录的不同值

如何在postgres的两列中添加唯一约束,其中一列的值为“ true”

如何为另一列中的每一行重复所有列值

如何在多个csv文件中获取每一列的唯一值

如何将一列的每一行值转换为pandas中的列表?

如何添加一行對另一列中的每個值求和一列?

MySQL为另一列中的每个唯一值选择最新条目

如何在网格显示的下一行中给每一列空间

如何在Linux中的单独文件中将文件的每一列除以一行?

如何在 Xamarin 表单的一行内的每一列中居中图像?

如何在 Xamarin 的一行内的每一列中居中图像?

如何使数据框中的每一行的每一列都有一个值?

为numpy中的每一行选择列

SQL如何基于另一列中的值在一行中多次选择列

如何在python中显示表格中每一行和每一列的总和

为矩阵中的每一列或每一行计算fft