sql - SQL:跨表分区的 CROSS JOIN
问题描述
我有下表
session_id | page_viewed
1 | A
1 | B
1 | C
2 | B
2 | E
我想做的是 page_viewed 列与其自身的交叉连接,但交叉连接是在 session_id 的分区上完成的。因此,从上面的表中查询将返回:
session_id | page_1 | page_2
1 | A | A
1 | A | B
1 | A | C
1 | B | A
1 | B | B
1 | B | C
1 | C | A
1 | C | B
1 | C | C
2 | B | B
2 | B | E
2 | E | B
2 | E | E
我今天研究了窗口函数,试图找到解决方法,但似乎无法使用连接函数。任何人都可以帮忙吗?
解决方案
嗯。. . 你似乎想要一个自我加入:
select t1.session_id, t1.page_viewed as page_1, t2.page_viewed as page_2
from t t1 join
t t2
on t1.session_id = t2.session_id
order by t1.session_id, t1.page_viewed, t2.page_viewed;
推荐阅读
- mysql - Ruby on Rails 需要 libmysqlclient.so.20 但我有 21... 需要降级?
- regex - 如何仅在包含 SUM 中包含字符串的单元格的行上使用 REGEXEXTRACT?
- matlab - 子图中的电影比例 - Matlab
- java - 我的小组遇到了问题,其中一个人发送了他的部分,但是有一个 ArrayIndexOutOfBounds 错误,但我没有看到问题
- laravel - Laravel 代客安装失败
- javascript - 如何动态创建按钮?
- react-big-calendar - 设置 scrollToTime 使日历在调整大小或拖放时松开当前滚动位置
- javascript - 有没有更高效的方式来遍历这个数组?(JavaScript)
- python - 加速 Geopandas 以选择多边形内的点
- c - 如何使用 VIPS 减少文本中的行间距?