mysql - MySQL 中的事件分组
问题描述
使用如下所示的表格:
id name DATE
1 a 2020-01-01
2 a 2020-01-02
3 b 2020-01-03
4 b 2020-01-04
5 a 2020-01-05
6 b 2020-01-06
我想将一对a
与下一个(按时间排序)分组,b
这样我就可以找到他们日期的差异。理想情况下,这看起来像:
id_a id_b difference
1 3 2
2 4 2
5 6 1
这似乎很棘手(sqlfiddle),inner join
因为使用类似的东西选择同一个表
SELECT *
FROM test
INNER JOIN test AS t2 ON test.name = "a"
AND t2.name = "b"
AND test.date < t2.date;
最终匹配超过 1a
个b
,并且过滤这似乎很困难,因为1
需要匹配3
和2
,4
所以像最小差异这样的简单规则不起作用。MySQL(8.0)甚至可以实现这样的事情吗?
解决方案
推荐阅读
- ssas - 如何使用 Oracle DW 创建 OLAP 多维数据集
- django - 使用现有键添加仅获取参数值?
- c++ - SFML Sprite 不可见
- joomla - 在扩展帮助 Joomla 中使用标签
- resize - 如何使用基于 web 的 noVNC 客户端调整 QEMU VNC 会话的大小
- javascript - Vue JS 强制重新渲染组件
- python - 使用 SIGINT 取消 multiprocessing.Pool
- c# - IIS 托管的 WCF Web 服务配置文件
- android - 从 Gradle 中的依赖项中排除项目
- php - 在 Woocommerce 中显示税率为 0% 时的税线